神奇的数学之回文数
Description
回文数是一种数字。如:8008, 这个数字正读是8008,倒读也是8008,正读倒读一样,所以这个数字就是回文数。
任取一个正整数,如果不是回文数,将该数与他的倒序数相加,若其和不是回文数,则重复上述步骤,一直到获得回文数为止。
例如:68变成154(68+86),再变成605(154+451),最后变成1111(605+506),而1111是回文数。
于是有数学家提出一个猜想:不论开始是什么正整数,在经过有限次正序数和倒序数相加的步骤后,都会得到一个回文数。
编写程序,验证上述猜想。
Input
一个正整数,不超过 10^{6}106 。
Sample Input 1
27228
Output
输出两行,一行是变换的过程,一行是变换的次数。
Sample Output 1
27228--->109500--->115401--->219912 3
代码如下,可AC:
#include <stdio.h>
int main()
{
long long n,a,b,c=0,z=0;
scanf("%lld",&n) ;
printf("%lld",n); //首先输出n
while(1)
{
b=n;
c=0;
while(b) //b不为0 循环进行
{
c=c*10+b%10; //求n的倒序数 赋值给c
b=b/10;
}
if(c==n) //判断n是否为回文数
break;
else
{
n=c+n; //n和n的倒序数相加
printf("--->%lld",n);
z++; //次数加1
}
}
printf("\n%lld",z); //输出次数
}