/*
题目:
寻找11~999之间的数n,它满足n,n^2,n^3均为回文数
*/
#include <iostream>
using namespace std;
/*判断是否为回文数*/
//按照反序重新构建新的数,与原数比较是否相等
bool symm(unsigned int n)
{
unsigned int i=n;
unsigned int m=0;
while(i)
{
m=10*m+i%10;//将低位通过取余取出,再变为高位
i=i/10;
}
return m==n;
}
int main() {
for(unsigned int n=11;n<=999;n++)
{
if(symm(n)&&symm(n*n)&&symm(n*n*n))
{
cout<<n<<endl;
}
}
return 0;
}
这个程序个人觉得可借鉴的片段有:
while(i)
{
m=10*m+i%10;//将低位通过取余取出,再变为高位
i=i/10;
}
1.反序构成新的数,与原数比较是否相等
2.除10取余,将数反过来
3.不论输入的数是几位的,通过i来定