42 lines
991 B
C
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;
|
|
} |