题目描述
输入一个高精度的正整数n(≤240位),去掉其中任意s个数字后,剩下的数字按原左右次序组成一个新的正整数。编程对给定的n和s,寻找一种方案,使得剩下的数字组成的新数最小。
输入
第1行:一个正整数n;
第2行:s(s<n的位数).
输出
最后剩下的最小数。
样例输入 Copy
175438
4
样例输出 Copy
13
#include<bits/stdc++.h>
using namespace std;
int a[1000005],b[1000005],c[1000005],ac,bc,cc,v,n,m;
string sa,sb;
int d(int z)
{
for(int i=z;i<ac;i++)
a[i]=a[i+1];
}
int j()
{
while(!a[ac]&&ac>1)
ac--;
for(int i=ac;i>=1;i--)
printf("%d",a[i]);
return 0;
}
int main()
{
cin>>sa>>n;
ac=sa.size();
for(int i=0;i<ac;i++)
a[ac-i]=sa[i]-48;
while(n)
{
for(int i=ac;i>=1;i--)
{
if(a[i]>a[i-1])
{
d(i);
ac--;
n--;
if(n==0)
{
j();
return 0;
}
break;
}
}
}
return 0;
}