社区微网站建设方案ppt模板,wordpress xmlrpc攻击,html5网站开发demo,网站开发代理合同题目描述
键盘输入一个高精度的正整数 N#xff08;不超过 250 位#xff09;#xff0c;去掉其中任意 k 个数字后剩下的数字按原左右次序将组成一个新的非负整数。编程对给定的 N 和 k#xff0c;寻找一种方案使得剩下的数字组成的新数最小。
输入格式
输入两行正整数。…题目描述
键盘输入一个高精度的正整数 N不超过 250 位去掉其中任意 k 个数字后剩下的数字按原左右次序将组成一个新的非负整数。编程对给定的 N 和 k寻找一种方案使得剩下的数字组成的新数最小。
输入格式
输入两行正整数。
第一行输入一个高精度的正整数 n。
第二行输入一个正整数 k表示需要删除的数字个数。
输出格式
输出一个整数最后剩下的最小数。
输入输出样例
输入 #1
175438
4输出 #1
13思路
我们的思路是这样的要删m个数一开始mk在左边m1个数中找到其中最小的数如果有多个则选最左边的记它的位置为t显然t左边的l个数都可以删掉此时还需要删m-l个数m重新赋值为m-l而t右边的数是一个新的数列进行同样的操作直到选出了n-k个数为止。
这样做可以每找出一个数就直接输出但还要考虑前导0的问题。以及若循环结束什么都没输出意味着答案是0就在程序结束前输出0。
AC Code
#include iostream
#include string
using namespace std;
int n,k,a[257],rest,t1,minp,cnt0;
bool flag0;
string num;
int main(){cinnumk;nnum.length();for(int i1;in;i)a[i]num[i-1]-0;restn-k;while(cntrest){minpt;for(int it;ikt;i)if(a[minp]a[i])minpi;if(a[minp])flag1;if(flag)couta[minp];k-minp-t;tminp1;cnt;}if(!flag) cout0;return 0;
}