测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

A25796. 删除数字

填空题 中等

题目描述

删除数字

题目描述

老师在黑板上写了一个不超过 500 位的正整数 n(1≤n<10500),要求同学们删除其中任意 k 个数字, 剩余数字的顺序不变,希望得到的数最大。

例如:n = 69134,k = 2,从 69134 中删除 2 个数字,将第一位 6 和第三位 1 删除,得到的新数 934 是最大的。

输入描述

输入两个整数 n 和 k(1≤n<10500,0≤k<n的位数),整数之间以一个空格隔开

输出描述

输出一个整数,表示删除 k 个数字后,得到的最大数

样例输入

69134 2

样例输出

934

参考答案

#include <bits/stdc++.h> using namespace std; string n; int main() { int k; cin >> n >> k; while (k--) { int i, ln = n.size(); for (i = 1; i < ln; i++) { if (n[i] > n[i - 1]) { n.erase(i - 1, 1); break; } } if (i == ln) n.erase(ln - 1, 1); } cout << n; return 0; }
上一题 下一题