【逆序】 删数问题

传送门

题解

给定一个大整数\(n\)(不超过250位),去掉其中的\(x\)个数字后组成新数。求能够得到的最小数字

\(50074897\;\; 2\)
\(4897\)

数据范围

\(N\)不超过\(250\)

题解

所以需要在判断逆序数的时候不删除相等的,处理后要去除前导0

Code

#include<bits/stdc++.h>
using namespace std;
#define rep(i,a,n) for(int i=a;i<n;i++)
#define per(i,a,n) for(int i=n-1;i>=a;i--)
#define ll long long

int main(){
    string n;
    int x;
    while(cin>>n>>x){
        while(x--){
            int idx=0;
            while(n[idx] <= n[idx+1] && idx < n.length())
                idx++;
            n.erase(idx,1);
        }

        while(n[0]=='0' && n.length()!=1)
            n.erase(0,1);
        cout<<n<<endl;
    }
}
posted @ 2020-06-17 11:52  Hyx'  阅读(142)  评论(0)    收藏  举报