6174问题
来源:互联网 发布:全民超神刷钻石软件 编辑:程序博客网 时间:2024/06/05 11:28
6174问题
内容描述
假设你有一个各位数字互不相同的四位数,把所有的数字从大到小排序后得到a,从小到大后得到b,然后用a-b替换原来这个数,并且继续操作。例如,从1234出发,依次可以得到4321-1234=3087、8730-378=8352、8532-2358=6174,又回到了它自己!现在要你写一个程序来判断一个四位数经过多少次这样的操作能出现循环,并且求出操作的次数比如输入1234执行顺序是1234->3087->8352->6174->6174,输出是4
输入
第一行输入n,代表有n组测试数据。
接下来n行每行都写一个各位数字互不相同的四位数输出
经过多少次上面描述的操作才能出现循环样例输入
1
1234样例输出
4
代码示例
#include<stdio.h>int compare(int number){ int i,j,t; int one,two,three,four; int a[100]; int smaller,bigger; int number_t; a[0]=one=number%10; a[1]=two=number/10%10; a[2]=three=number/10/10%10; a[3]=four=number/1000; for(i=0;i<=3;i++){ for(j=0;j<=3-i-1;j++){ if(a[j]>=a[j+1]){ t=a[j+1]; a[j+1]=a[j]; a[j]=t; } } } smaller=a[0]*1000+a[1]*100+a[2]*10+a[3]; bigger=a[3]*1000+a[2]*100+a[1]*10+a[0]; //printf("smaller=%d,bigger=%d\n",smaller,bigger); number_t=bigger-smaller; return number_t;}int main(){ int number,number_t; int n; int k; scanf("%d",&n); while(n!=0){ k=1; scanf("%d",&number); number_t=compare(number); while(1){ if(number_t!=6174){ // printf("%d\n",number_t); k++; number_t=compare(number_t); } else break; } printf("%d\n",++k); n--; }return 0;}
阅读全文
0 0
- 6174问题
- 6174问题
- 6174问题
- 6174问题
- 6174问题
- 6174问题
- 6174问题
- 6174问题
- 6174问题
- 6174问题
- 6174问题
- 6174问题
- 6174问题
- 6174问题
- 6174问题
- 6174问题
- 6174问题
- 6174问题。
- Swift字符与ASCII数值相互转换
- Linux的用户和用户组管理
- 二叉树递归的创建及三种遍历(先序、中序、后序)
- 耦合水平集
- 数据结构与算法分析(C)习题1.5解答 证明 log x < x
- 6174问题
- HDOJ 1005 Number Sequence
- HDU 5534 Partial Tree(dp 背包)
- linux非root安装nginx
- JS 中的 Html 拼接
- Can not issue data manipulation statements with executeQuery()错误解决
- 无线通信关键技术---扰码
- 投资人邮箱
- Unnamed bean definition specifies neither 'class' nor 'parent' nor 'factory-bean'