回文数
时间限制:
1000 ms | 内存限制:
65535 KB
难度:
0
-
描述
-
请寻找并输出1至1000000之间的数m,它满足m、m^2和m^3均为回文数。回文数大家都知道吧,就是各位数字左右对称的整数,例如121、676、123321等。满足上述条件的数如m=11,m^2=121,m^3=1331皆为回文数。
-
输入
- 没有输入 输出
- 输出1至1000000之间满足要求的全部回文数,每两个数之间用空格隔开,每行输出五个数 样例输入
- 样例输出
主要在在于思路,有思路就出来了。在没见到这个题的时候,我都是用的 字符串,或者是for循环加while循环。都是比较麻烦的,而且一用就超时。今天又学一种方法:调用函数:bool fun(long long n) 必须用longlong型,因为i最大是1000000,i的三次方超int了
{ 用bool,bool是只判断而不计算,会节省时间复杂度。
long long i,j;
for(i=n,j=0;i>0;i=i/10)
{
j=j*10+i%10;
}
if(j==n)
return 1;
else
return 0;
}
int main()
{
long long k=0;
for(long long i=1;i<=1000000;i++)
{
if(fun(i)&&fun(i*i)&&fun(i*i*i))
{
printf("%lld ",i),k++;
if(k%5==0)
printf("\n");
}
}
}