博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
57.6174问题
阅读量:6071 次
发布时间:2019-06-20

本文共 1259 字,大约阅读时间需要 4 分钟。

描述

假设你有一个各位数字互不相同的四位数,把所有的数字从大到小排序后得到a,从小到大后得到b,然后用a-b替换原来这个 数,并且继续操作。例如,从1234出发,依次可以得到4321-1234=3087、8730-378=8352、8532-2358=6174,又回 到了它自己!现在要你写一个程序来判断一个四位数经过多少次这样的操作能出现循环,并且求出操作的次数

比如输入1234执行顺序是1234->3087->8352->6174->6174,输出是4

输入
第一行输入n,代表有n组测试数据。
接下来n行每行都写一个各位数字互不相同的四位数
输出
经过多少次上面描述的操作才能出现循环
样例输入
11234
样例输出
4
1 #include
2 int main( ) { 3 int n, m, i, j, t, a[4], max, min, count; 4 scanf("%d", &n); 5 while(n--) { 6 count = 1; 7 scanf("%d",&m); 8 while(m != 6174) { 9 for(i = 0; i < 4; i ++) {10 a[i] = m % 10;11 m = m / 10;12 }13 for(i = 0; i < 4; i ++)14 for(j = i + 1; j < 4; j ++)15 if(a[i] < a[j]) {16 t = a[i];17 a[i] = a[j];18 a[j] = t;19 }20 max = a[0] * 1000 + a[1] * 100 + a[2] * 10 + a[3];21 min = a[3] * 1000 + a[2] * 100 + a[1] * 10 + a[0];22 m = max - min;23 count ++;24 }25 printf("%d\n", count);26 }27 return 0;28 }
View Code

 

转载于:https://www.cnblogs.com/tong69/p/5779234.html

你可能感兴趣的文章
处理excel表的列
查看>>
Excuse me?这个前端面试在搞事!
查看>>
C#数据采集类
查看>>
quicksort
查看>>
检验函数运行时间
查看>>
【BZOJ2019】nim
查看>>
Oracle临时表空间满了的解决办法
查看>>
四部曲
查看>>
LINUX内核调试过程
查看>>
【HDOJ】3553 Just a String
查看>>
Java 集合深入理解(7):ArrayList
查看>>
2019年春季学期第四周作业
查看>>
linux环境配置
查看>>
ASP.NET MVC中从前台页面视图(View)传递数据到后台控制器(Controller)方式
查看>>
lintcode:next permutation下一个排列
查看>>
python 递归
查看>>
一个想法(续二):换个角度思考如何解决IT企业招聘难的问题!
查看>>
tomcat指定配置文件路径方法
查看>>
linux下查看各硬件型号
查看>>
对象合成复用之策略模式
查看>>