回文数
时间限制:
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之间满足要求的全部回文数,每两个数之间用空格隔开,每行输出五个数
解析:这道题直接模拟就好了,算是回文数中最简单的题了,直接写个判断回文数的函数,将整数num逆转,逆转的方法就是利用求余%和/的思想,此题总有一个常错的地方,就是m的平方和立方可能会超范围所以一定要用long long 或者_int64即可。
贴一下自己的代码
#include <iostream> using std::endl; using std::cin; using std::cout; bool isHuiWenNumber(long long num) { long long sum=0,temp=num; //将整数num逆转 while(num) { sum=sum*10+num%10; num/=10; } if(temp==sum) return 1; else return 0; } int main() { #ifdef LOCAL freopen("input.txt" , "r" , stdin); freopen("output.txt" , "w" , stdout); #endif int count = 0; for(long long i=1; i<=1000000; ++i) { long long b=i*i; long long c = b*i; if(isHuiWenNumber(i) && i