题目来源:码蹄集
https://matiji.net/exam/brushquestion/4/3181/1DC60EA6DF83A333301CFFE1407FBA59
参考程序:
#include <stdio.h>
#include <string.h>
int i, f;
char s[205], k[205];
int main() {
scanf("%s", s);
int len = strlen(s);
int i = 0;
while (s[i++] == '0');
i--;
if (i != 0) {
int j = 0;
for (; i < len; i++, j++)
s[j] = s[i];
for (; j < len; j++)
s[j] = '\0';
}
len = strlen(s);
if (s[0] == '1' && len > 1) {
bool flag = true;
for (int i = 1; i < len; i++)
if (s[i] != '0')
flag = false;
if (flag) {
for (int i = 0; i < len - 1; i++)
printf("9");
return 0;
}
}
len--;
for (i = 0; i <= len - i; i++)
k[i] = k[len - i] = s[i];
if (strcmp(k, s) > 0) {
while (k[--i] == '0')
k[i] = k[len - i] = '9';
k[i] = k[len - i] = --k[i];
}
printf("%s", k);
return 0;
}