回文数的定义为:如果把一个数的各个数位上的数字颠倒过来得到的新数与原数相等,则此数是回文数。7,22,131,2112,31013,… 都是回文数。对任意给出的一个整数n,经过一系列的处理,最后都能成为回文数。处理的方法是,该数加上它的颠倒数,
例如: n=176
第一次处理后 176+671=847
第二次处理后 847+748=1595
第三次处理后 1595+5951=7546
第四次处理后 7546+6457=14003
第五次处理后 14003+30041=44044
此时成为回文数,共进行 5 次处理。
给出 n 后,求出使该数按照以上规则进行一系列处理后成为回文数的最少操作次数。
一个整数 n(1≤n≤1000000)。
使 n 成为回文数的最少处理次数。若开始给出的 n 是回文数,则输出 0(即不需任何处理)。
67
2
111
0
#include<bits/stdc++.h>
using namespace std;
int t=0;
bool hw(int x)
{
unsigned i=x,y=0;
while(i>0)
{
y=y*10+i%10;
i/=10;
}
return y==x;
}
int r(int m)
{
int ans=0;
while(m!=0)
{
ans=ans*10+m%10;
m/=10;
}
return ans;
}
int f(int a)
{
cout<<a<<" "<<t<<endl;
if(hw(a)) return t;
t++;
return f(a+r(a));
}
int main()
{
int n;
cin>>n;
cout<<f(n);
return 0;
}
期待输出:14
实际输出:69
求大佬帮助