描述
给定一个十进制正整数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<stdio.h>
#include<string.h>
struct node{
char s[50];
int len;
int k;
}z[100000];
int main(){
int t,i,len,j,x;
scanf("%d",&t);
for(i=0;i<t;i++){
scanf("%s %d",&z[i].s,&z[i].k);
z[i].len=strlen(z[i].s);
}
for(i=0;i<t;i++){
for(j=0;j<z[i].len-1;j++){
if(z[i].s[j]-'0'>z[i].s[j+1]-'0'){
z[i].k--;
for(x=j;x<z[i].len-1;x++){
z[i].s[x]=z[i].s[x+1];
}
z[i].len--;
j=-1;
}
if(z[i].k==0){
break;
}
}
}
for(i=0;i<t;i++){
for(j=0;j<z[i].len-z[i].k;j++){
printf("%c",z[i].s[j]);
}
printf("\n");
}
}