描述
输入一个高精度的正整数n,去掉其中任意s个数字后剩下的数字按原左右次序组成一个新的正整数。编程对给定的n和s,寻找一种方案使得剩下的数字组成的新数最小。
输出新的正整数,若输出前有0则舍去。(n不超过240位)
输入数据均不需判错。
格式
输入格式
n 和 s
输出格式
一个正整数,即最少需要的组数。
样例
输入样例
175438
4
输出样例
13
限制
时间限制: 1000 ms
内存限制: 65536 KB
int main(){
char s[300];
int n,len;
scanf("%s%d",s,&n);
//cout<<s<<endl;
len=strlen(s);
int a[2][300];memset(a,0,sizeof(a));
for(int i=1;i<=len;i++) a[0][i]=s[i-1]-'0';
int cur=len-n,cnt=0;//剩余多少位
int t=1;
int temp[300]={0};
while(cnt!=cur){
for(int i=t;i<=n+1;i++){
if(a[0][t]>a[0][i]) t=i;//找到当前区间最小的
}
temp[cnt++]=a[0][t];
t++;
n++;
}
int flag=0;
for(int i=0;i<cur;i++)
if(temp[i]!=0){
flag=i;
break;
}
for(int i=flag;i<cur;i++) printf("%d",temp[i]);
return 0;
}