總時間限制:?
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;
}