题目描述:
输入一个高精度的自然数n,去掉其中任意s个数字后剩下的数字按原来从左到右的次序组成一个新的正整数。编程对给定的n和s,寻找一种方案使得剩下的数字组成的新数最小。
输出新的自然数。(n不超过240位)
输入格式:
输入两个自然数,一个n,一个s。
输出格式:
输出一个自然数,最后剩下的最小自然数。
样例输入:
175438 4
样例输出:
13
提示:
样例解释:
175438
第一次删掉7后15438
第二次删掉5后1438
第三次删掉4后138
第四次删掉8后13
这是其中一种删法,可能有其他删法。
注意:
不用去除前导零。
数的每一位都被删之后输出0。
时间限制: 1000ms
空间限制: 256MB
代码如下:
#include<bits/stdc++.h>
using namespace std;
int main(){
char a[241];
int n,b[241]={};
cin>>a;
cin>>n;
int s=strlen(a);
if(s==n){
cout<<0;
return 0;
}
for(int i=0;i<s;i++){
b[i]=a[i]-'0';
}
for(int i=0;i<n;i++){
for(int j=0;j<s-1;j++){
if(b[j]>b[j+1]){
for(int k=j;k<s-1;k++){
b[k]=b[k+1];
}
break;
}
}
}
for(int i=0;i<s-n;i++){
cout<<b[i];
}
return 0;
}