总时间限制:
1000ms
内存限制:
65536kB
描述
给定一个十进制正整数n(0 < n < 1000000000),每个数位上数字均不为0。n的位数为m。
现在从m位中删除k位(0< m),求生成的新整数最小为多少?
例如: n = 9128456, k = 2, 则生成的新整数最小为12456
输入
第一行t, 表示有t组数据;
接下来t行,每一行表示一组测试数据,每组测试数据包含两个数字n, k。
输出
t行,每行一个数字,表示从n中删除k位后得到的最小整数。
样例输入
2
9128456 2
1444 3
样例输出
12456
1
代码:
#include
using namespace std;
#include
#include
char p[20];
int main()
{
int t,len;
cin>>t;
for(int i=1;i<=t;++i)
{
int k;
memset(p,0,sizeof(p));
scanf("%s%d",p,&k);
len=strlen(p);
int t=0;
while(t
{
int flag=0;
for(int i=0;i
{
if(p[i]>p[i+1]&&p[i+1]!='0')
{
p[i]='0';
flag=1;
t++;
}
}
if(flag==0)
{
--len;
p[len]='0';
t++;
}
}
for(int i=0;i<=len;++i)
if(p[i]!='0')
printf("%c",p[i]);
printf("\n");
}
return 0;
}