给定一个十进制正整数n(0<n<1000000000),每个数位上数字均不为0。n的位数为m。
现在从m位中删除k(0<k<m)位,求生成的新整数最小为多少?
例如: n=9128456,k=2,则生成的新整数最小为12456。
第一行t, 表示有t组数据;
接下来t行,每一行表示一组测试数据,每组测试数据包含两个数字n,k。
t行,每行一个数字,表示从n中删除k位后得到的最小整数。
2
9128456 2
1444 3
12456
1
代码
#include <bits/stdc++.h>
using namespace std;
int main(){
int n,T;
string s;
cin>>T;
while(T--){
cin>>s>>n;
while(n){
int i = 0;
for(;i<s.length()-1;i++){
if(s[i] > s[i+1]){
s.erase(i,1);
n--;
break;
}
}
if(i == s.length() - 1) break;
}
while(n--){
s.erase(s.length()-1,1);
}
int p = 0;
while(s[p]=='0' && p < s.length()-1) p++;
for(int i = p; i < s.length();i++) cout << s[i];
cout<<endl;
}
return 0;
}
80分