真的看了好多遍都不知道哪裡出錯了,求大神幫忙找錯,感激不盡!
#include <stdio.h>
#include <string.h>
#define MIN(a, b) ((a) < (b) ? (a) : (b))
#define ABS(x) ((x) < 0 ? (-(x)) : (x))
typedef long long ll;
int run_case() {
char n[25];
if (scanf("%s", n) == EOF) {
return 1;
}
int len = strlen(n);
ll num = 0;
for (int i = 0; i < len; i++) {
num = num * 10 + (n[i] - '0');
}
int first_even_idx = -1;
for (int i = 0; i < len; i++) {
if ((n[i] - '0') % 2 == 0) {
first_even_idx = i;
break;
}
}
if (first_even_idx == -1) {
printf("0\n");
return 0;
}
ll high = 0;
ll low = 0;
for (int i = 0; i < len; i++) {
high *= 10;
if (i < first_even_idx) {
high += n[i] - '0';
} else if (i == first_even_idx) {
high += (n[i] - '0') + 1;
} else {
high += 1;
}
}
for (int i = 0; i < len; i++) {
low *= 10;
if (i < first_even_idx) {
low += n[i] - '0';
} else if (i == first_even_idx) {
low += (n[i] - '0') - 1;
} else {
low += 9;
}
}
ll ans = MIN(num - low, high - num);
printf("%lld\n", ans);
return 0;
}
int main() {
while (!run_case());
return 0;
}