6174问题
来源:互联网 发布:python sklearn教程 编辑:程序博客网 时间:2024/06/02 06:03
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<iostream>#include<cstdlib>#include <cstdio>#include<cstring>#include<algorithm>using namespace std;bool cmp(const char& p,const char& q){return p>q;}int main(){int n,i,j,k,t,m,top;char a[5],str[5];cin >> n;while (n--){cin >> a;strcpy(str,a);t=0;while (strcmp(str,"6174")!=0){t++;k=strlen(str);sort(str,str+k);i=atoi(str);sort(str,str+k,cmp);j=atoi(str);m=j-i;top=4;while (m){str[--top]=m%10+'0';m/=10;}}cout << t+1 << endl;}return 0;}
标程:#include<iostream>#include<algorithm>#include<stdio.h>using namespace std;int main(){//freopen("1.txt","r",stdin);int k;cin>>k;while(k--){int n,a[4],n1,n2;scanf("%d",&n);int s=1;while(n!=6174){a[0]=n%10;a[3]=n/1000;a[1]=n/10%10;a[2]=n/100%10;sort(a,a+4);n1=1000*a[3]+100*a[2]+10*a[1]+a[0];n2=1000*a[0]+100*a[1]+10*a[2]+a[3];n=n1-n2;s++;}printf("%d\n",s);}}
0 0
- 6174问题
- 6174问题
- 6174问题
- 6174问题
- 6174问题
- 6174问题
- 6174问题
- 6174问题
- 6174问题
- 6174问题
- 6174问题
- 6174问题
- 6174问题
- 6174问题
- 6174问题
- 6174问题
- 6174问题
- 6174问题。
- 实现约瑟夫环
- 从测试的角度看什么是合格的开发
- java多线程编程
- Let the Balloon Rise(1004)
- 浮点型在内存中的存在方式
- 6174问题
- (转)标记-清除算法
- 1.[python cookbook]简单EchoServer
- 基本的排序算法之—— 冒泡排序(稳定)(对于固定的内存空间数组或顺序表,对于单链表也可以)
- centos 6.5 mongodb3.11安装记
- POJ1486 Sorting Slides 二分图
- android 可拖动控件
- 深入理解HTTP Session
- NOSQL(四)放宽一致性约束