ACM(458)小光棍数(1)

来源:互联网 发布:梦龙网络计划如何打印 编辑:程序博客网 时间:2024/04/29 04:10

小光棍数


描述
最近Topcoder的XD遇到了一个难题,倘若一个数的三次方的后三位是111,他把这样的数称为小光棍数。他已经知道了第一个小光棍数是471,471的三次方是104487111,现在他想知道第m(m<=10000000000)个小光棍数是多少?
输入
有多组测试数据。第一行一个整数n,表示有n组测试数据。接下来的每行有一个整数m。
输出
输出第m个小光棍数。
样例输入
11
样例输出
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时的算法。




0 0
原创粉丝点击