题目描述
键盘输入一个高精度的正整数n(n< 1 0 240 10^{240} 10240),去掉其中任意s个数字后剩下的数字按照原来的次序将组成一个新的非负整数。编程对给定的n和s,寻求一种方案,使得剩下组成的新数最小。
输入格式
第1行:一个正整数n;
第2行:s(s<n的位数).
输出格式
最后剩下的最小数。
为了达到最优,把n先删成一个上升序列,再从后往前删。
#include <bits/stdc++.h>
using namespace std;
int main() {
int m;
string n;
cin >> n >> m;
for (;;) {
if (m == 0)
break;
int j = 0;
while (j < n.size() - 1 && n[j] <= n[j + 1]) j++;
n.erase(j, 1), m--;
}
while (n[0] == '0') n.erase(0, 1);
if (n.size() == 0)
cout << 0;
else
cout << n;
}