题目
描述
输入一个高精度的正整数 n(长度小于或等于 240 位),去掉其中任意 s 个数字后剩下的数字按原左右次序将组成一个新的正整数。编程对给定的 n 和 s,寻找一种方案,使得剩下的数字组成的新数最小。
输入
输入两行,第 1 行为 1 个正整数 n,第 2 行为 1 个整数 s。
输出
输出一行一个数,表示最后剩下的最小数。
思路
此题运用贪心,高精度数的输入和输出。
AC代码
#include <bits/stdc++.h>
using namespace std;
int main() {
int k;
string s;
while (cin >> s >> k) {
if (k > s.size()) {
cout << "Invalid Input.";
continue;
}
while (k) {
int i;
for (i = 0; i < s.size() - 1 && s[i] <= s[i + 1]; i++);
s.erase(i, 1);
k--;
}
if (s.empty()) {
cout << 0 << endl;
continue;
}
int i = 0;
for (i = 0; i < s.size()-1;) {
if (s[i] == '0') i++;
else break;
}
cout << s.substr(i) << endl;
}
}
不懂的在评论区留言哦。