对称的数字
小D同学发现了一些数字与其反转数字相加求和得出新数字,新数字再不断重复这个过程,最终可能得到一个回文数,当然啦也有些数字不断重复这个过程也得不到回文数。例如数字349,有如下过程 349 + 943 = 1292 1292 + 2921 = 4213 4213 + 3124 = 7337 也就是经过3次迭代得到了了一个回文数。现在小D同学给你一个数字,问你能不能在1到100次迭代内(包含100次)得到一个回文数,如果可以输出这个回文数,如果不可以则输出NO。
input
多组测试数组,以EOF结束。
每组测试数据一行,每行一个整数,表示小D同学给出的数字,给出的整数大于等于0且在int范围内
output
每个测试数据输出一行,如果可以在1到100次迭代(包含100次)内得到回文数,那么输出这个回文数,如果不可以,则输出NO
```c
#include<stdio.h>
int work(long long n)//被调函数用来判读是否为回文数;
{
char str[1000];
long long i=0,k,x;
x=n;
while(n>0)
{
str[i]=n%10+'0';
n/=10;
i++;
}
sscanf(str,"%d", &k);
if(k==x)
return 1;
else
return 0;
}
int main()
{
long long n,i,j,k,find,x;
char str[1000];
while(scanf("%d", &n)!=EOF)
{
find=0;
for(i=1;i<=100;i++)
{
j=0;
x=n;
while(n>0)
{
str[j]=n%10+'0';
n/=10;
j++;
}//将数倒序输入字符串;
sscanf(str,"%d", &k);//将数导出;
n=x+k;
if(work(n)==1)
{
printf("%d\n", n);
find=1;
break;
}
}
if(find==0)
printf("no\n");
}
return 0;
}
## 注意:此处加的数叫大,还会越界需要用long long;回文数的最大特性为前后颠倒相等,只要判断颠倒前后是否相等即可;