分析问题
首先,要学会对任何数字进行倒装,可以通过以下循环实现
//设定一个数字123
int n=123,newn=0;
while(n){//如果n不等于0,执行while
newn=newn*10+n%10;//加上最后一位数,并已保存数字的权重加10加上新数
n=n/10;//去掉最后一位数
}
//通过以上循环实现数字重组 如123 会变成 321
对于给定的一个数,如果对其进行倒装后,前后数相等,就是回文数。因此,需要进行前后比较
如果比较后,前后不相同,就进行前数+后数,并统计次数
如果相同,输出比较的次数即可
建立模型
输入一个数字n
循环执行,如果前后数不相等:
对它进行倒装,前后数相加,统计加1
输出统计结果
编写代码
#include <bits/stdc++.h>
using namespace std;
int main(){
int n,m,tmp,newn=0,c=0;
cin>>n;
while(n!=m){
//倒装
tmp=n;
while(tmp){//如果n不等于0,执行while
newn=newn*10+tmp%10;//加上最后一位数,并已保存数字的权重加10加上新数
tmp=tmp/10;//去掉最后一位数
}
if(n!=newn){
n=n+newn;
c=c+1;
newn=0;//这是倒装后的结果,为了不影响下次重组,要清空
}
}
return 0;
}