文章标题
2017-08-14 11:08
176 查看
题目描述
输入
n
s
输出
最后剩下的最小数。
样例输入
175438
4
样例输出
13
输入一个高精度的正整数N,去掉其中任意S个数字后剩下的数字按原左右次序组成一个新的正整数。编程对给定的N和S,寻找一种方案使得剩下的数字组成的新数最小。 输出新的正整数。(N不超过240位)输入数据均不需判错。
输入
n
s
输出
最后剩下的最小数。
样例输入
175438
4
样例输出
13
#include<cstdio> #include<cstring> #include<iostream> #include<algorithm> using namespace std; int a[250]; int c[250]; int main() { memset(a,0,sizeof(a)); memset(c,0,sizeof(c)); int n,s,k,w; char b[250]; cin>>b; cin>>s; int l=0; l=strlen(b); for(int i=0;i<l;i++) { a[i]=b[l-i-1]-48; } int q=l-s; int j; int p=0; w=l-1; while(q--) { j=10; for(int i=w;i>=q;i--) { if(j>a[i])j=a[i]; } for(int i=w;i>=q;i--) { if (a[i]==j) { w=i-1; c[p++]=j; break; } } } int f=0;int r; for(int i=0;i<p;i++) { if(c[i]) {f=1;r=i;break;} } for(int i=r;i<p;i++) { printf("%d",c[i]); } if(f==0)cout<<"0"; cout<<endl; }