回文数

分析问题

首先,要学会对任何数字进行倒装,可以通过以下循环实现

//设定一个数字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;
}

保存 编译 运行