描述
给定一个十进制正整数n(0
现在从m位中删除k位(0
例如: n=9128456,k=2,则生成的新整数最小为12456。
输入描述
第一行t, 表示有t组数据;
接下来t行,每一行表示一组测试数据,每组测试数据包含两个数字n,k。
输出描述
t行,每行一个数字,表示从n中删除k位后得到的最小整数。
用例输入 1
2 9128456 2 1444 3
用例输出 1
12456 1
代码如下:
#include<bits/stdc++.h>
using namespace std;
char a[241]={};
int n,s;
int shan(){
for(int j=1;j<s;j++){
if(a[j]<a[j-1]){
// cout<<j<<" ";
return j-1;
}
if(j==s-1){
return j;
}
}
}
int main(){
int xx;
cin>>xx;
while(xx--){
cin>>a>>n;
s=strlen(a);
if(n>=s){
cout<<0<<endl;
continue;
}
for(int i=0;i<n;i++){
int j=shan();
//cout<<j<<endl;
for(int k=j;k<s-1;k++){
swap(a[k],a[k+1]);
}
}
bool flag=0;
for(int i=0;i<s-n;i++){
if(a[i]!='0'){
flag=1;
}
if(flag==1){
cout<<a[i];
}
}
cout<<endl;
}
return 0;
}