描述
给定一个十进制正整数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> int main() { char a[10]; int b[10],len,i,t,k,j,p,q; scanf("%d",&t); for(j=1;j<=t;j++) { memset(b,-1,sizeof(b)); scanf("%s",a); scanf("%d",&k); len=strlen(a); for(i=1;i<=len;i++) b[i]=a[i-1]-‘0‘; for(p=1;p<=k;p++) for(i=1;i<=len;i++) { if(i==len) { len--; break; } if(b[i]>b[i+1]) { for(q=i;q<len;q++) b[q]=b[q+1]; len--; break; } } for(i=1;i<=len;i++) if(b[i]>0) printf("%d",b[i]); printf("\n"); } return 0; }
时间: 2024-10-18 05:02:59