题目
这道题想了几个小时也没有想出特别好的解法。在评论区看到了一种非常好的思路,惊为天人,补充了一点细节。
#include <iostream>
#include <cstdio>
#include <cmath>
#include <iomanip>
#include <queue>
#include <map>
#include <cstring>
#include <algorithm>
using namespace std;
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
string str;
int k;
cin >> str >> k;
while (k--) {
for (int i = 0; i < str.size(); i++) {
if (str[i] > str[i + 1]) {//当高位的数字比低位大时,删除高位的数字
str.erase(i, 1);
break;
}
}
}
while (str[0] == '0' && str.size() > 1) {//去掉前导0
str.erase(0, 1);
}
if (str.size()) {//当删除的位数恰好等于数字的位数时,字符串为空应该输出0,不过题目里没有提到这一情况
cout << str << endl;
}
else {
cout << '0' << endl;
}
return 0;
}