Problem Description
键盘输入一个高精度的正整数n(≤240位),去掉其中任意s个数字后剩下的数字按原左右次序将组成一个新的正整数。编程对给定的n和s,寻找一种方案,使得剩下的数字组成的新数最小。
Input
第一行为测试示例个数n,对于每个测试示例分别有两行,第一行为一个高精度的正整数n,第二行为去掉的数字个数s。
Output
最后剩下的最小数。
Sample Input
1 178543 4
Sample Output
13
/*
解题报告:从第一个数开始求连续单调递增序列,删除最大的那个数,重新得到的一列数
一定是最小的;循环要删除的个数的次数之后,得到的数,就是要求最小的数。
*/
//标程:
#include<stdio.h> #include<string.h> int main() { //freopen("a.txt","r",stdin); char s[300]; int n,t; scanf("%d",&t); while(t--) { scanf("%s",s); scanf("%d",&n); int k=0,len=strlen(s),i,j,r; while(k<n) { for(i=0;i<len-1;i++) if(s[i]>s[i+1]) break; for(r=i;r<len-1;r++) s[r]=s[r+1]; k++, len--; } if(len<1) printf("0\n"); else { for(i=0;i<len;i++) if(s[i]!='0') break; for(j=i;j<len;j++) printf("%c",s[j]); printf("\n"); } } return 0; }