1019. 数字黑洞
题目截图:

思路:
简单模拟。详解见另一篇博客。
代码:
1 /*
2 1019. 数字黑洞
3 */
4
5 #include <stdio.h>
6 #include <string.h>
7 #include <math.h>
8 #include <stdlib.h>
9 #include <time.h>
10
11 int cmp1(const void* a, const void* b) { // 从小到大排序
12 return *(int*)a-*(int*)b;
13 }
14
15 int cmp2(const void* a, const void* b) { // 从大到小排序
16 return *(int*)b-*(int*)a;
17 }
18
19 void to_array(int n, int num[]) { // int 型整数转换成 int 型数组
20 int i;
21 for(i=0; i<4; ++i) {
22 num[i] = n%10;
23 n /= 10;
24 }
25 }
26
27 int to_number(int num[]) { // int 型数组转换成 int 型整数
28 int i, sum = 0;
29 for(i=0; i<4; ++i) {
30 sum = sum*10 + num[i];
31 }
32 return sum;
33 }
34
35 int main() {
36 int n, MAX, MIN; // int 型整数,最大值,最小值
37 scanf("%d", &n);
38 int num[4]; // int 型数组
39 while(1) {
40 to_array(n, num);
41 qsort(num, 4, sizeof(int), cmp1); // 递增排序
42 MIN = to_number(num); // 递增序列转为最小值
43 qsort(num, 4, sizeof(int), cmp2); // 递减排序
44 MAX = to_number(num); // 递减序列转为最大值
45 n = MAX - MIN; // 得到下一个数
46 // 格式化输出
47 printf("%04d - %04d = %04d\n", MAX, MIN, n);
48 if(n==0 || n==6174) break;
49 }
50
51 return 0;
52 } 相关推荐
MAC2007 2020-01-29
leegang 2019-12-31
jyonghu00 2019-12-13
luckykapok 2019-10-25
yingheone 2019-07-01
mlcml 2019-06-26
chaigang 2019-04-12
ITService 2018-01-10
javaMerea 2019-04-16
fofcaptain 2019-04-16
丁一鸣的CSDN 2018-12-17
xxylql 2016-01-28
kuangzw 2019-04-12
focusforce 2012-12-25
安在信息安全新媒体 2018-04-15
天文八卦学 2018-01-31
我在国博讲故事 2018-01-30
中国科普博览 2018-01-20
辍耕录 2018-01-17