小光棍数
时间限制:1000 ms | 内存限制:65535 KB
难度:1
描述最近Topcoder的XD遇到了一个难题,倘若一个数的三次方的后三位是111,他把这样的数称为小光棍数。他已经知道了第一个小光棍数是471,471的三次方是104487111,现在他想知道第m(m<=10000000000)个小光棍数是多少?
输入有多组测试数据。第一行一个整数n,表示有n组测试数据。接下来的每行有一个整数m。输出输出第m个小光棍数。样例输入11样例输出471
我最初的想法该方法过于复杂了,该代码一直无法AC,最后我发现应该是超时,但提交却为编译错误
#include
int main()
{
int n,i;
__int64 m,t,j,k,s;
scanf("%d",&n);
for(i=0;i
{
scanf("%I64d",&m);
if(m==1)
printf("471\n");
else
{
for(j=2,k=1;j<=m;k++)
{
t=471+k;
s=t%1000;
s=(s*s*s)%1000;
if(s%1000==111)
{
j++;
}
}
printf("%I64d\n",t);
}
}
return 0;
}
只要这个数的后三位是471就可以,该方法较为简洁.但仍然无法AC,错误提示为编译错误,一直很困惑。
#include
int main()
{
int n;
__int64 s,m;
scanf("%d",&n);
while(n--)
{
scanf("%I64d",&m);
s=(m-1)*1000+471;
printf("%I64d\n",s);
}
return 0;
}
#include
int main()
{ long long a,b;
scanf("%lld",&a);
while(a--)
{
scanf("%lld",&b);
printf("%lld\n",(b-1)*1000+471);
}
return 0;
}
unsigned int 0~4294967295
int 2147483648~2147483647
unsigned long 0~4294967295
long 2147483648~2147483647
long long的最大值:9223372036854775807
long long的最小值:-9223372036854775808
unsigned long long的最大值:18446744073709551615
__int64的最大值:9223372036854775807
__int64的最小值:-9223372036854775808
unsigned __int64的最大值:18446744073709551615
原文:http://blog.csdn.net/phytn/article/details/38258735