【逆序】 删数问题
传送门
题解
给定一个大整数\(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;
}
}

浙公网安备 33010602011771号