[PAT-A 1069]The Black Hole of Numbers
程序员文章站
2022-07-15 23:12:26
...
题目大意:
给定任一个各位数字不完全相同的 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;
}
推荐阅读
-
1069 The Black Hole of Numbers (20分)
-
1069 The Black Hole of Numbers (20 分)(模拟)
-
【PAT】A1069 The Black Hole of Numbers (20分)
-
PAT(A)1069 The Black Hole of Numbers (20分)
-
pat-1069 The Black Hole of Numbers (20分)
-
[PAT-A 1069]The Black Hole of Numbers
-
PAT-A-1069 The Black Hole of Numbers 【验证】
-
PAT A1069 The Black Hole of Numbers (20分)