题目描述
输入一个N位高精度的正整数X,去掉其中任意S个数字后剩下的数字按原左右次序组成一个新的正整数。对给定的N和S,寻找一种方案使得剩下的数字组成的新数字值最小。
输出包含所去掉的数字的位置和组成的新的正整数(S<N不超过240);假设输入的数据不存在删后首位为0的情况。
我们通过举一个例子来看下,N=178543, S=4的情况删数字的过程如下:
178543
->17543
->1543
->143
->13
输入格式
第一行:一个N位的正整数X(N<240)
第二行:一个正整数S,表示要删除的位数,S<N。
输出格式
一个正整数,为删数后的结果。
样例输入
1234567 3样例输出
1234问题提示
源代码
#include <bits/stdc++.h>
using namespace std;
int main(){
char n[1001];
int s,len;
cin>>n>>s;
len=strlen(n);
for(int k=1;k<=s;k++){
for(int j=0;j<len;j++){
if(n[j+1]<n[j]){
for(int i=j;i<=len;i++){
n[i]=n[i+1];
}
len--;
break;
}
}
}
bool flag=false;
for(int i=0;i<len;i++){
if(n[i]!='0')
flag=true;
if(flag)
cout<<n[i];
}
return 0;
}