6174问题
来源:互联网 发布:广州网络维护maxingit 编辑:程序博客网 时间:2024/06/16 20:11
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 <algorithm>#include <iomanip>#include<stdio.h> #include<string.h> #include<time.h>using namespace std;int cmp(int x){int c[100],t;memset(c, 0, sizeof(c)); c[1]=x/1000; c[2]=x/100-10*c[1]; c[3]=x/10-100*c[1]-10*c[2]; c[4]=x%10; sort(c+1,c+5); t=1000*c[4]+100*c[3]+10*c[2]+c[1]-(1000*c[1]+100*c[2]+10*c[3]+c[4]); return t;}int main(){int a[100],bb,k,b[100],d[100];cin>>bb;for(int i=0;i<bb;i++) cin>>a[i];for(int j=0;j<bb;j++){ k=0; memset(b, 0, sizeof(b)); b[k]=a[j]; do { b[k+1]=cmp(b[k]); k++; }while(b[k]!=b[k-1]); d[j]=k; cout<<d[j]<<endl; } return 0;}
查了百度之后,不管四位数经过多少次变换,最后都是 6174,当然这是建立在有一定数学功底的基础上,下面的代码是 用变换后的四位数是否为6174来判断条件
#include<iostream>#include<algorithm>#include<stdio.h>using namespace std;int main(){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问题。
- ffmpeg
- 连接(join)group by、order by、where的执行顺序
- 数据结构(栈):栈的链式存储结构
- 根据源码解析xUtils 3.x数据库update操作
- 202 安全
- 6174问题
- 静态方法和类方法, staticmethod & classmethod
- 2017第八届蓝桥杯B组省赛第五题:取位数
- vue使用vue-ueditor碰到的问题(Couldn't find preset "es2015" relative to directory)
- TreeSet集合的一个比较器排序去重案例
- CSS
- 利用 Python 进行数据分析(十二)pandas:数据合并
- instanceof、isInstance、isAssignableFrom的用法介绍
- 再遇PAT天坑之1075. PAT Judge (25)