| 问题D:回文数猜测-分支循环小综合 |
| 题目描述 |
| 所谓回文数,即顺序与逆序均为相同的整数。如292、10301均为回文数。 |
| “顺逆求和”操作就是把一个数与其逆序数相加。 |
| 有人猜测:任意一个十进制整数n(n不为回文数),经有限次“顺逆求和’操作可得到一个回文数。 |
| |
| 例如,对于n=69,有(1)69+96=165(2)165+561=726(3)726+627=1353 |
| (4)1353+3531=4884(回文数)。 |
| 试设计程序,验证某一区间[x1,×2]中的每一个数n是否为回文数, |
| 若不是,请展示n通过以上“顺逆求和”操作转化为回文数的步骤数。 |
| 例如n=69时经4次操作得到回文数,输出69(4)及得到的回文数4884。 |
| 如果超过100步还未能转化为回文数,则终止操作,输出n(?),表明该数可能不满足猜测。 |
| 输入 |
| 输入两个整数(第一个小于第二个)。 |
| 输出 |
| 输出回文数的步骤数及相应的回文数。 |
| 输入 |
| 86 90 |
| 输出 |
| 86(3):1111 |
| 87(4):4884 |
| 88(0):88 |
| 89(?): |
| 90(1):99 |
| */ |
| #include <stdio.h> |
| int palindrome(int n); |
| int main(){ |
| int x1,x2; |
| int flag ; |
| scanf("%d%d",&x1,&x2); |
| for(int i = x1;i <= x2;i ++ ){ |
| if(i == palindrome(i)){ |
| printf("%d(0):%d\n",i,i); |
| } |
| |
| else |
| { |
| |
| |
| flag = 0; |
| int t = i; |
| for(int j = 1;j <= 100;j ++){ |
| |
| t += palindrome(t); |
| if(t == palindrome(t)){ |
| printf("%d(%d):%d\n",i,j,t); |
| flag = 1; |
| break; |
| } |
| } |
| if(flag == 0) |
| { |
| printf("%d(?)\n",i); |
| } |
| |
| } |
| } |
| |
| return 0; |
| } |
| |
| int palindrome(int n){ |
| int ret = 0; |
| while (n > 0) |
| { |
| ret = n % 10 + ret * 10; |
| n /= 10; |
| } |
| |
| return ret; |
| } |
| |
| |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了