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

A17436. 拼数(number)

填空题 困难

题目描述

拼数(number)

题目描述

小 R 正在学习字符串处理。小 X 给了小 R 一个字符串 s,其中 s 仅包含小写英文字母及数字,且包含至少一个 1~9 中的数字。小 X 希望小 R 使用 s 中的任意多个数字,按任意顺序拼成一个正整数。注意:小 R 可以选择 s 中相同的数字,但每个数字只能使用一次。例如,若 s 为 1a01b,则小 R 可以同时选择第 1、3、4 个字符,分别为 1、0、1,拼成正整数 101 或 110;但小 R 不能拼成正整数 111,因为 s 仅包含两个数字 1。

小 R 想知道,在他所有能拼成的正整数中,最大的是多少。你需要帮助小 R 求出他能拼成的正整数的最大值。

输入格式

从文件 number.in 中读入数据。

输入的第一行包含一个字符串s,表示小 X 给小 R 的字符串。

输出格式

输出到文件 number.out 中。

输出一行一个正整数,表示小 R 能拼成的正整数的最大值。

样例输入 1

5

样例输出 1

5

样例解释 1

s 仅包含一个数字 5,因此小 R 仅能拼成正整数 5。

样例输入 2

290es1q0

样例输出 2

92100

样例解释2

s 包含数字 2, 9, 0, 1, 0。可以证明,小 R 拼成的正整数的最大值为 92100。

数据范围

设 |s| 为字符串 s 的长度。对于所有测试数据,保证:

1 ≤ |s| ≤ 106

s 仅包含小写英文字母及数字,且包含至少一个 1 ∼ 9 中的数字。

参考答案

#include <bits/stdc++.h> using namespace std; //循环字符串,将所有数字插入vector //将vector排序 //倒序输出 string s; vector<char> v; int main() { cin >> s; for (char i : s) { if (i >= '0' && i <= '9') { v.push_back(i); } } sort(v.begin(), v.end(), greater<int>()); for (char i : v) { cout << i; } return 0; }
上一题 下一题