湖南金辉建设集团有限公司网站,2021十条重大新闻,珠海网站策划,公众号模板P1106 删数问题 题目描述 键盘输入一个高精度的正整数 nnn#xff08;不超过 250250250 位#xff09;#xff0c;去掉其中任意 kkk 个数字后剩下的数字按原左右次序将组成一个新的非负整数。编程对给定的 nnn 和 kkk#xff0c;寻找一种方案使得剩下的数字组成的新数最小…P1106 删数问题题目描述键盘输入一个高精度的正整数n nn不超过250 250250位去掉其中任意k kk个数字后剩下的数字按原左右次序将组成一个新的非负整数。编程对给定的n nn和k kk寻找一种方案使得剩下的数字组成的新数最小。输入格式输入两行正整数。第一行输入一个高精度的正整数n nn。第二行输入一个正整数k kk表示需要删除的数字个数。输出格式输出一个整数最后剩下的最小数。输入输出样例 #1输入 #1175438 4输出 #113说明/提示用len ⁡ ( n ) \operatorname{len}(n)len(n)表示n nn的位数保证1 ≤ k len ⁡ ( n ) ≤ 250 1 \leq k \operatorname{len}(n) \leq 2501≤klen(n)≤250。注意去掉若干数字后剩下的数可以存在前导零而输出时不要输出前导零。解析#includeiostream#includestring#includevectorusingnamespacestd;string s,ans;intcnt;// 删掉元素个数intk;intn;intmain(){ios::sync_with_stdio(false);cin.tie(nullptr);cout.tie(nullptr);cinsk;ns.size();// 如果当前数比后一个大就可以进行删除for(inti0;ik;i){autoits.begin();boolisFindfalse;while(it!s.end()){// 删除前导0while(*it0){its.erase(it);}if(*it*(it1)){// 那就进行删除操作its.erase(it);isFindtrue;break;}it;}if(!s.empty()!isFind)s.erase(s.cend());// 如果没有找到就删除最后一个元素}if(!s.empty())couts;elsecout0;return0;}