描述

假设你有一个各位数字不完全相同的四位数,把所有的数字从大到小排序后得到a,从小到大排序后得到b,然后用a-b替换原来这个数,并且继续操作。

例如,从1234出发,依次可以得到4321-1234=3087、8730-378=8352、8532-2358=6174、7641-1467=6174,又回到了它自己!现在请你写一个程序来判断一个四位数经过多少次这样的操作能出现循环。

比如输入1234执行顺序是1234->3087->8352->6174->6174,输出结果是4。

输入
输入文件名为kaprekar.in。
输入文件第一行是一个正整数n,表示有n组测试数据,
接下来的n行,每行一个各位数字不完全相同的四位数。
输出
输出文件名为kaprekar.out。
对于每组测试数据输出一行,每行中只有一个整数,表示经过多少次操作才出现循环。
输入样例 1
1
1234
输出样例 1
4
提示
【数据范围】
对于50%的数据:0<n<=100;
对于100%的数据:0<n<=10000。

代码

#include <algorithm>
#include<iostream>
using namespace std;
int cmp(int a,int b){
	return a>b;
}
int main(){
	int qqq,iii;
	cin>>qqq;
	for(iii=0;iii<qqq;iii++){
		int n,c;
		int a[4]={0};
		int maxx,minx,cnt=1;
		cin>>n;
		cnt=1;
		while(n!=6174){
			for(int i=0;i<4;i++){
				a[i]=n%10;
				n=n/10;
			}
			sort(a,a+4);
			maxx=a[3]*1000+a[2]*100+a[1]*10+a[0];
			minx=a[0]*1000+a[1]*100+a[2]*10+a[3];
			n=maxx-minx;
			cnt++;
		}
		cout<<cnt<<endl;
	}
		
}

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐