给定一个十进制正整数n(0 < n < 1000000000),每个数位上数字均不为0。n的位数为m。
现在从m位中删除k位(0<k < m),求生成的新整数最小为多少?
例如: n = 9128456, k = 2, 则生成的新整数最小为12456
Input
第一行t, 表示有t组数据;
接下来t行,每一行表示一组测试数据,每组测试数据包含两个数字n, k。
Output
t行,每行一个数字,表示从n中删除k位后得到的最小整数。
Sample Input
2
9128456 2
1444 3
Sample Output
12456
1
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
int main()
{
int num;
cin>>num;
while(num--)
{
string s;
int n;
cin>>s>>n;
int l=s.length();
n=l-n;
int i=0;
while(l>n)
{
while(s[i]<=s[i+1])
i++;
if(s[i]>s[i+1])
{
l--;
for(int j=i;j<l;j++)
s[j]=s[j+1];
}
i--;
if(i==l)
break;
}
i=0;
while(s[i]=='0')
i++;
for(;i<n;i++)
{
printf("%c",s[i]);
}
cout<<endl;
}
}