欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

[PAT-A 1069]The Black Hole of Numbers

程序员文章站 2022-07-15 23:12:26
...

[PAT-A 1069]The Black Hole of Numbers
[PAT-A 1069]The Black Hole of Numbers
题目大意:
给定任一个各位数字不完全相同的 4 位正整数,如果我们先把 4 个数字按非递增排序,再按非递减排序,然后用第 1 个数字减第 2 个数字,将得到一个新的数字。
已知这样做,答案就会停在6174,现给定四位数,编写程序演示达到6174的过程。

思路:
1)写两个函数,其中一个用int型整数转换成int型的array数组,另一个将int型数组转换成int型整数。
2)建立while循环,对每一层循环:
1.将n转换为数组,分别递增递减排序。
2.将递增递减的数组转换为整数。
3.两数相减,如果为0或6174,则退出循环

AC代码:

//PAT_A 1069
#include<cstdio>
#include<algorithm>
using namespace std;
bool cmp(int a, int b) {
	return a > b;
}
void to_array(int n, int num[]) {
	for (int i = 0; i < 4; i++) {
		num[i] = n % 10;
		n /= 10;
	}
}
int to_number(int num[]) {
	int sum = 0;
	for (int i = 0; i < 4; i++) {
		sum = sum * 10 + num[i];
	}
	return sum;
}
int main() {
	int n, MIN, MAX, num[5];
	(void)scanf("%d", &n);
	while (true) {
		to_array(n, num);
		sort(num, num + 4);
		MIN = to_number(num);
		sort(num, num + 4, cmp);
		MAX = to_number(num);
		n = MAX - MIN;
		printf("%04d - %04d = %04d\n", MAX, MIN, n);
		if (n == 0 || n == 6174)break;
	}
	return 0;
}
相关标签: PAT-A