博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
(南阳理工acm 题目57)6174问题
阅读量:5039 次
发布时间:2019-06-12

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

6174问题

时间限制:
1000 ms  |  内存限制:65535 KB
难度:
2
 
描述

假设你有一个各位数字互不相同的四位数,把所有的数字从大到小排序后得到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
#include
int main(){ int n; scanf("%d",&n); while(n--){ int m; scanf("%d",&m); int max, min; int a, b, c, d , t, k ,m1 = m, s = 1; while(1){ if(s == 1) k = m; a = k / 1000; b = k % 1000 / 100; c = k %100 / 10; d = k % 10; if(a < b){t = a; a = b; b = t;} if(c < d){t = c; c = d; d = t;} if(a < c){t = a; a = c; c = t;} if(b < d){t = b; b = d; d = t;} if(b < c){t = b; b = c; c = t;} max = a * 1000 + b * 100 + c * 10 + d; min = d * 1000 + c * 100 + b * 10 + a; if(s > 1) m1 = k; k = max -min; if(k == m1){break;} s++; } printf("%d\n",s); }}

  

转载于:https://www.cnblogs.com/cwenliu/p/5779643.html

你可能感兴趣的文章
大型分布式网站架构技术总结
查看>>
HDU 1017[A Mathematical Curiosity]暴力,格式
查看>>
[算法之美] KMP算法的直观理解
查看>>
EntityFramework 性能优化
查看>>
【ASP.NET开发】菜鸟时期的ADO.NET使用笔记
查看>>
android圆角View实现及不同版本号这间的兼容
查看>>
OA项目设计的能力③
查看>>
Cocos2d-x3.0 文件处理
查看>>
全面整理的C++面试题
查看>>
Web前端从入门到精通-9 css简介——盒模型1
查看>>
Activity和Fragment生命周期对比
查看>>
OAuth和OpenID的区别
查看>>
android 分辨率自适应
查看>>
查找 EXC_BAD_ACCESS 问题根源的方法
查看>>
国外媒体推荐的5款当地Passbook通行证制作工具
查看>>
日常报错
查看>>
list-style-type -- 定义列表样式
查看>>
hibernate生成表时,有的表可以生成,有的却不可以 2014-03-21 21:28 244人阅读 ...
查看>>
mysql-1045(28000)错误
查看>>
Ubuntu 编译出现 ISO C++ 2011 不支持的解决办法
查看>>