6174问题

原创 2013年12月06日 10:37:01
输入一个n位数,用大序减去小序,然后继续对结果这样操作,输出操作序列,知道出现循环。
样例输入:1234
样例输出:1234 -> 3087 -> 8532 -> 6147 -> 6147

解释:
输入1234

得4321-1234=3087、8730-378=8352、8532-2358=6174、7164-1467=6174这里变成了无限循环,结束。


#include<stdio.h>
#include<string.h>
int get_next(int x);

int main() {
	int num[2000], count;
	scanf("%d", &num[0]);
	printf("%d", num[0]);
	count = 1;
	while(1) {
		num[count] = get_next(num[count-1]);
		printf(" -> %d", num[count]);
		int found = 0;
		int i;
		for (i = 0; i < count; i++)
			if (num[i] == num[count]) {
				found = 1;
				break;
			}
		if (found)
			break;
		count++;
	}
	printf("\n");
	return 0;
}

int get_next(int x) {
	int a,b,n;
	int i,j;
	char s[10];
	//把x转换为字符串保存在s里
	sprintf(s, "%d", x);
	n = strlen(s);
	for (i = 0; i < n; i++) 
		for (j = i + 1; j < n; j++)
			if (s[i] > s[j]) {
				char temp = s[j];
				s[j] = s[i];
				s[i] = temp;
			}
	//把s转换为数字保存在b
	sscanf(s, "%d", &b);
	//开始和结尾相对应的互换
	for (i = 0; i < n/2; i++) {
		char t = s[i];
		s[i] = s[n-1-i];
		s[n-1-i] = t;
	}
	sscanf(s, "%d", &a);
	return a - b;
}


相关文章推荐

6174的问题

例:输入1234 假设你有一个各位数字互不相同的四位,把所有数字 从大到小排序后得到a,从小到大排序后得到b. 然后用a-b代替原来的这个数,然后继续操作,例如,从1234出发,依次得到4321-...

南阳理工学院--语言入门--6174问题

6174问题 时间限制:1000 ms  |  内存限制:65535 KB 难度:2 描述 假设你有一个各位数字互不相同的四位数,把所有的数字从大到小排序后得到a,从小到大后得到b,然后用a...

NYOJ 57 6174问题

啊哈!初次知道6174,还是在高中时,一本科普书上讲的。作为回忆,就把这道题AC了。 水题,不过去掉下面的注释,可以很直观的看到过程。 最后!!!为什么我用memset函数总是忘写#include...

6174问题

import java.io.BufferedInputStream; import java.util.ArrayList; import java.util.Arrays; import java...

NYOJ-57:6174问题

描述 假设你有一个各位数字互不相同的四位数,把所有的数字从大到小排序后得到a,从小到大后得到b,然后用a-b替换原来这个数,并且继续操作。例如,从1234出发,依次可以得到4321-1234=30...

6174问题

6174问题 时间限制:1000 ms  |  内存限制:65535 KB 难度:2 描述 假设你有一个各位数字互不相同的四位数,把所有的数字从大到小排序后得到a,从小...

南阳OJ--题目57:6174问题

题目网站链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=57&rec=rec  6174问题 题目相关资料查询:6174数字黑洞 题目信息:...

算法篇-排序和检索-6174问题

题目:假设你有一个各位数字互不相同的四位数,把所有数字从大到小排序后得到a,从小到大后得到b,然后a-b替换原来这个数,并且继续操作。输入一个n位数,输出操作序列,直到出现循环(即新得到的数曾经得到过...

POJ 1350 Cabric Number Problem (6174问题)水题

【题意简述】:6174问题,就是输入一个四位数,将数字从大到小的排序结果,减去从小到大的排序结果,得到的结果再重复上述操作!直到得到的值是0,或者6174,便结束!(其中还有一些细小的叙述,参见题目。...

ACM基础题:6174问题

6174问题 时间限制:1000 ms | 内存限制:65535 KB 难度:2 描述 假设你有一个各位数字互不相同的四位数,把所有的数字从大到小排序后得到a,从小到大后得到b,然后用a-b替换原...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:6174问题
举报原因:
原因补充:

(最多只允许输入30个字)