题目:给定一个数字n,n+其各位数字翻转的数,直到n为回文数。输出经过几步变为回文并输出每步的变化。
- 思路:两个函数,一个judge()判断是否为回文数,一个rev()将其翻转
- 循环,判断回文,若不是回文则相加翻转后的数字,直到是回文为止。
#include <bits/stdc++.h>
using namespace std;
int num[1005];
int digit[1005];
bool judge(int n)
{
int cnt=0;
while(n)
{
digit[cnt++]=n%10;
n/=10;
}
for(int i=0;i<cnt/2;i++)
{
if(digit[i]!=digit[cnt-1-i])
return false;
}
return true;
}
int rev(int n)
{
int tmp=0;
while(n)
{
tmp=tmp*10+n%10;
n/=10;
}
return tmp;
}
int main(void)
{
int n,m;
cin>>n;
m=0;
num[m++]=n;
while(!judge(n))
{
n+=rev(n);
num[m++]=n;
}
cout<<m-1<<endl;
for(int i=0;i<m;i++)
{
if(i!=m-1)
{
cout<<num[i]<<"--->";
}
else cout<<num[i]<<endl;
}
return 0;
}