ACM(458)小光棍数(1)

小光棍数


描述
最近Topcoder的XD遇到了一个难题,倘若一个数的三次方的后三位是111,他把这样的数称为小光棍数。他已经知道了第一个小光棍数是471,471的三次方是104487111,现在他想知道第m(m<=10000000000)个小光棍数是多少?
输入
有多组测试数据。第一行一个整数n,表示有n组测试数据。接下来的每行有一个整数m。
输出
输出第m个小光棍数。
样例输入
1
1
样例输出
471
来源
原创
上传者
wmnwmn


C++代码实现:
(1)一般且超时的算法,可借此看出规律的算法:

  long long m;
cin>>m;
long long j=471,t=0,r=0;
for(int i=0;i<m;j++)
{
t=j;
for(int p=0;p<2;p++)
{
t%=1000;
t*=j;
}
t%=1000;
if(t==111)
{
i++;
r=j;
}
}
cout<<r<<endl;

(2)运行,试数,看出规律后给出的算法:

long long m;
cin>>m;
long long r=(m-1)*1000+471;
cout<<r<<endl;

上述都只为在输入一个m时的算法。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值