6174问题
来源:互联网 发布:c语言函数求最小公倍数 编辑:程序博客网 时间:2024/06/05 23:54
假设你有一个各位数字互不相同的四位数,把所有的数字从大到小排序后得到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<stdio.h>int main(){int N,i,n,m,k,t,j,max,min;int a[4];//定义数组,是想可以直接利用for循环来进行大小交换,如果用四个变量的话需要用函数来实现 scanf("%d",&N);while(N--){scanf("%d",&n);for(k=1;k<100;k++){m=n;//n的值最后会发生改变,用来存储最大值与最小值的差,成为新的n,所以用m来存储原来n的值 a[3]=n%10;//将每个位置的数存到数组里 a[2]=n/10%10;a[1]=n/100%10;a[0]=n/1000;for(i=0;i<3;i++)//进行从小到大排序for(j=i+1;j<4;j++){if(a[i]>a[j]){t=a[i];a[i]=a[j];a[j]=t;}}max=a[3]*1000+a[2]*100+a[1]*10+a[0];//设置最大值和最小值 min=a[0]*1000+a[1]*100+a[2]*10+a[3];n=max-min;if(n==m)//进行关键比较 break;elsecontinue;}printf("%d\n",k);}return 0;}
思路大概都是这样,如果有疑问和更好的可以评论留言,感谢你的访问。
阅读全文
0 0
- 6174问题
- 6174问题
- 6174问题
- 6174问题
- 6174问题
- 6174问题
- 6174问题
- 6174问题
- 6174问题
- 6174问题
- 6174问题
- 6174问题
- 6174问题
- 6174问题
- 6174问题
- 6174问题
- 6174问题
- 6174问题。
- hibernate表结构三种继承关系
- HDU 6053 TrickGCD
- The Frog's Games
- 欢迎使用CSDN-markdown编辑器
- 2017 Multi-University Training Contest
- 6174问题
- Ionic环境
- 适配器模式(Adapter):类适配器、对象适配器
- 【bzoj1050】[HAOI2006]旅行comf
- python中闭包中变量的影响因素
- solr学习(1.3)-solr全文检索实现原理
- Laravel安装后访问空白
- poj 1026 Cipher【置换群*循环节】
- CC PRIMEDST(点分治+FFT)