6174问题(南阳oj57)

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行每行都写一个各位数字互不相同的四位数

输出
经过多少次上面描述的操作才能出现循环
样例输入
1
1234
样例输出
4
来源
[张洁烽]原创
上传者

张洁烽

/*循环的结束条件是这个四位数是6174!!!
*/
#include<stdio.h>
#include<algorithm>
using namespace std;
int main()
{
	int i,test,n,k,cout,a[4];
	char s[4];
	scanf("%d",&test);
	while(test--)
	{
		scanf("%d",&n);
		cout=1;
		while(n!=6174)
		{
			for(i=0;i<4;i++)
			{
				a[i]=n%10;
				n/=10;
			}
			sort(a,a+4);
			k=a[0]*1000+a[1]*100+a[2]*10+a[3];
			n=a[3]*1000+a[2]*100+a[1]*10+a[0];
			n-=k;
			cout++;
		}
		printf("%d\n",cout);
	}
	return 0;
}
时间: 2024-10-10 17:35:25

6174问题(南阳oj57)的相关文章

南阳 6174

6174问题 时间限制:1000 ms  |  内存限制:65535 KB 难度:2 描述 假设你有一个各位数字互不相同的四位数,把所有的数字从大到小排序后得到a,从小到大后得到b,然后用a-b替换原来这个数,并且继续操作.例如,从1234出发,依次可以得到4321-1234=3087.8730-378=8352.8532-2358=6174,又回到了它自己!现在要你写一个程序来判断一个四位数经过多少次这样的操作能出现循环,并且求出操作的次数 比如输入1234执行顺序是1234->3087->

南阳oj 6174问题

#include<iostream>#include<stdio.h>#include<algorithm> using namespace std;int f1(int n){ int a[4]; a[0]=n/1000; a[1]=n/100%10; a[2]=n%100/10; a[3]=n%10; sort(a,a+4); int ans=a[3]*1000+a[2]*100+a[1]*10+a[0]; return ans;}int f2(int n){ in

【南阳OJ分类之语言入门】80题题目+AC代码汇总

声明: 题目部分皆为南阳OJ题目. 代码部分包含AC代码(可能不止一个)和最优代码,大部分都是本人写的,并且大部分为c代码和少部分c++代码and极少java代码,但基本都是c语言知识点,没有太多差别,可能代码有的写的比较丑,毕竟知识有限. 语言入门部分题基本都较为简单,是学习编程入门的很好练习,也是ACM的第一步,入门的最佳方法,望认真对待. 本文由csdn-jtahstu原创,转载请注明出处,欢迎志同道合的朋友一起交流学习.本人QQ:1373758426和csdn博客地址. now begi

2015南阳CCPC L - Huatuo&#39;s Medicine 水题

L - Huatuo's Medicine Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 无 Description Huatuo was a famous doctor. He use identical bottles to carry the medicine. There are different types of medicine. Huatuo put medicines into the bottles and chain these b

6174

6174问题 时间限制: 1000 ms  |  内存限制: 65535 KB 难度: 2 描述 假 设你有一个各位数字互不相同的四位数,把所有的数字从大到小排序后得到a,从小到大后得到b,然后用a-b替换原来这个数,并且继续操作.例如,从 1234出发,依次可以得到4321-1234=3087.8730-378=8352.8532-2358=6174,又回到了它自己!现在要你写一个 程序来判断一个四位数经过多少次这样的操作能出现循环,并且求出操作的次数 比如输入1234执行顺序是1234->3

南阳理工 题目9:posters(离散化+线段树)

posters 时间限制:1000 ms  |  内存限制:65535 KB 难度:6 描述 The citizens of Bytetown, AB, could not stand that the candidates in the mayoral election campaign have been placing their electoral posters at all places at their whim. The city council has finally deci

南阳理工另一种阶乘问题

#include<stdio.h>int main(){  int n,m;  int sum,i;  int a[21];  int t=1,t1=1;  for(i=1;i<21;i=i+2)  {   a[i]=t*t1;   a[i+1]=a[i];   t=t1*t;   t1=t1+2;  }  scanf("%d",&n);  while(n--)  {   sum=0;   scanf("%d",&m);   for

南阳 7

街区最短路径问题 时间限制:3000 ms  |  内存限制:65535 KB 难度:4 描述 一个街区有很多住户,街区的街道只能为东西.南北两种方向. 住户只可以沿着街道行走. 各个街道之间的间隔相等. 用(x,y)来表示住户坐在的街区. 例如(4,20),表示用户在东西方向第4个街道,南北方向第20个街道. 现在要建一个邮局,使得各个住户到邮局的距离之和最少. 求现在这个邮局应该建在那个地方使得所有住户距离之和最小: 输入 第一行一个整数n<20,表示有n组测试数据,下面是n组数据; 每组第

南阳OJ-38 布线问题(最小生成树应用_prim)

布线问题 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描述 南阳理工学院要进行用电线路改造,现在校长要求设计师设计出一种布线方式,该布线方式需要满足以下条件:1.把所有的楼都供上电.2.所用电线花费最少 输入 第一行是一个整数n表示有n组测试数据.(n<5)每组测试数据的第一行是两个整数v,e.v表示学校里楼的总个数(v<=500)随后的e行里,每行有三个整数a,b,c表示a与b之间如果建铺设线路花费为c(c<=100).(哪两栋楼间如果没有指明花费,则表示这