#include <stdio.h> #include <stdlib.h> #include <string.h> #include <math.h> void decline(int a[]) { int temp = 0; for (int i = 0; i < 3; i++) { for (int j = i + 1; j < 4; j++) { if (a[i] < a[j]) { temp = a[j]; a[j] = a[i]; a[i] = temp; } } } } void up(int a[]) { int temp = 0; for (int i = 0; i < 3; i++) { for (int j = i + 1; j < 4; j++) { if (a[i] > a[j]) { temp = a[j]; a[j] = a[i]; a[i] = temp; } } } } void jian(int a[], int b[], int c[]) { for (int i = 3; i >= 0; i--) { if (a[i] - b[i] >= 0) { c[i] = a[i] - b[i]; } else { c[i] = a[i] + 10 - b[i]; if (i != 0) { a[i - 1] = a[i - 1] - 1; } } } } int main() { int n; scanf("%d", &n); int num[4] = {0}; int i = 3; int num1[4] = {0}; int num2[4] = {0}; int num3[4] = {0}; int temp1[4] = {0}; int temp2[4] = {0}; while (n != 0) { num[i--] = n % 10; n = n / 10; } if (num[0] == num[1] && num[0] == num[2] && num[0] == num[3]) { printf("%d%d%d%d - %d%d%d%d = 0000", num[0], num[1], num[2], num[3], num[0], num[1], num[2], num[3]); return 0; } for (int i = 0; i < 4; i++) { num3[i] = num[i]; } do { decline(num3); for (int i = 0; i < 4; i++) { num1[i] = num3[i]; } up(num3); for (int i = 0; i < 4; i++) { num2[i] = num3[i]; } for (int i = 0; i < 4; i++) { temp1[i] = num1[i]; temp2[i] = num2[i]; } jian(temp1, temp2, num3); printf("%d%d%d%d - %d%d%d%d = %d%d%d%d\n", num1[0], num1[1], num1[2], num1[3], num2[0], num2[1], num2[2], num2[3], num3[0], num3[1], num3[2], num3[3]); } while (num3[0] != 6 || num3[1] != 1 || num3[2] != 7 || num3[3] != 4); return 0; }
感觉写得好复杂啊
标签:pat,num2,num3,int,d%,乙级,++,num,1019 From: https://www.cnblogs.com/Npc-Hb/p/17173410.html