http://acm.hdu.edu.cn/showproblem.php?pid=1282
解答此题关键在于回文数的判断,而判断一个数是否是回文数可采用将一个数各个位上的数字分开倒叙重新组合,然后与原数比较。
#include <iostream>
#include <cstdio>
using namespace std;
int judge(int n)
{
int b[20];
int res=0,k=0;
while(n!=0)
{
b[++k]=n%10;
n=n/10;
}
for(int i=1;i<=k;i++)
{
res*=10;
res+=b[i];
}
return res;
}
int main()
{
int n,k,a[1005];
while(scanf("%d",&n)!=EOF)
{
k=0;
a[0]=n;
while(n!=judge(n))
{
n+=judge(n);
a[++k]=n;
}
printf("%d\n",k);
for(int i=0;i<=k;i++)
{
if(i!=k) printf("%d--->",a[i]);
else printf("%d\n",a[i]);
}
}
return 0;
}