题目大意:
题目原文:http://uva.onlinejudge.org/external/100/10018.pdf(不知道为什么这个地址打不开了)
题目是说给我们一个数字,将它逆转然后加上原来的数,然后判断其结果是不是回文数(顺着和逆着看一样),如果不是回文数,则重复以上步骤。
计算出一个数要几次操作形成回文数,并输出这个回文数。
直接按题目的意思计算即可。
附上代码:

1 #include<stdio.h> 2 long p10(long a)//返回10^a 3 { 4 long x=1; 5 while(a--) 6 x*=10; 7 return x; 8 } 9 10 int bit(long a)//计算a的位数 11 { 12 int i=0; 13 while(a) 14 { 15 a/=10; 16 i++; 17 } 18 return i; 19 } 20 21 long initial(long a)//返回a的逆转数 22 { 23 int bi,i; 24 long b=0; 25 bi=bit(a); 26 for(i=1;i<=bi;i++) 27 { 28 b+=a%p10(i)/p10(i-1)*p10(bi-i); 29 } 30 return b; 31 } 32 33 int main() 34 { 35 long a,n,x; 36 scanf("%ld",&n); 37 while(n--) 38 { 39 scanf("%ld",&a); 40 x=0; 41 while(a!=initial(a)) //判断是否回文数 42 { 43 a+=initial(a); 44 x++; 45 } 46 printf("%ld %ld\n",x,a); 47 } 48 return 0; 49 }