题目:
键盘输入一个高精度的正整数n(<=240位),去掉任意s个数字后剩下的数字按原左右次序将组成一个新的正整数。编程对给定的n和s,寻找一种方案,使得剩下的数最小。
样例输入
175438
4
样例输出
13
#include <cstdio>
#include <cstring>//引用strlen,如下。
int main() {
int s, len;//len:n的位数。
int l, r;//l:左界限;r:右界限(输出时会有用)。
char n[245];
scanf("%s %d", n, &s);
len = strlen(n);//strlen函数,取一个char型数组的位数。
for (int i = 0; i < s; i++) {
for (int j = 0; j < len - i - 1; j++) {
if (n[j] > n[j + 1]) {
for (int k = j; k < len - i; k++) {
n[k] = n[k + 1];
}
break;
}
}
}
l = 0, r = len - s;
while (n[l] != 0 && r > 1) l++, r--;//过滤前导0(如输入:321000 3)。
for (int i = l; i < len - s; i++) {
printf("%c", n[i]);
}
printf("\n");
return 0;
}