Problem Description
输入一个高精度的正整数N,去掉其中任意S个数字后剩下的数字按原左右次序组成一个新的正整数。编程对给定的N和S,寻找一种方案使得剩下的数字组成的新数最小。
输出新的正整数。(N不超过240位)输入数据均不需判错。
输出新的正整数。(N不超过240位)输入数据均不需判错。
Input
输入有多组数据,每组数据为n和s。
Output
对于每组数据输出最后剩下的最小数。
Sample Input
175438 4
Sample Output
13
#include<iostream> #include<string.h> using namespace std; int main() { char a[260]; int s,i,k; while(cin>>a) // 高精度的正整数N 怕长度不够由字符串输入 { cin>>s; //去掉s个数字 k=strlen(a); while(s) { for(i=0;a[i];i++) if(a[i]>a[i+1]) // 前一个比后一个大 { strcpy(a+i,a+i+1); // 把后面的复制到前面去 s--; k--; break; } } while(a[0]=='0'&&k>1) //去零(去掉前面的零) { strcpy(a,a+1); k--; } cout<<a<<endl; } return 0; }