Files
2023-02-21 10:56:54 +08:00

42 lines
991 B
C

#include <stdio.h>
#include <stdlib.h>
int digits[5][2];
int best1 = 100000, best2 = 10000;
void pickNext(int layer, int goal, int alreadyPicked,int* best) {
int i = 0;
if (layer == 6) {
if (abs(alreadyPicked - goal) < abs(*best - goal)) {
*best = alreadyPicked;
}
}
else {
for (;i < 5; i++) {
if (digits[i][1] == 0) {
digits[i][1] = 1;
pickNext(layer + 1, goal, alreadyPicked * 10 + digits[i][0], best);
digits[i][1] = 0;
}
}
}
}
int main() {
int input, i;
scanf("%d", &input);
if (input < 10000 || input > 99999) {
printf("Not a 5-digit number!");
return 0;
}
else {
for (i = 4; i >= 0; i--) {
digits[i][0] = input % 10;
input /= 10;
}
pickNext(1, 40000, 0, &best1);
pickNext(1, 60000, 0, &best2);
printf("%d %d", best1, best2);
}
return 0;
}