题目传送门
sol
很显然贪心,考虑每次删字符串中最大的那个数,删够 \(k\) 次后结束循环,然后去除前导零就可以了,根据小学数学可以证明,这里就不再阐述了,由读者自行证明。
:::info[code]{open}
#include<bits/stdc++.h>
using namespace std;
int main(){int k;string s;cin>>s>>k;for(int i=1;i<=k;i++){int t=-1;for(int j=0;j<=s.size()-1;j++){//找最大值所在的位置if(s[j]>s[j+1]){t=j;break;}}if(t== -1){//删除s.erase(s.size()-1); }else{s.erase(t,1);}}int f=0;if(s=="0"){//特判,如果是0那就直接输出0,如果不判断那么将不会输出cout<<0;return 0;}for(int i=0;i<=s.size()-1;i++){//去除前导零if(s[i]!='0'){f++;}if(f){cout<<s[i];}}}
