题目描述
给一个正整数 ()。用 的十进制数字重新排列(每个数字都要用上,出现次数不变),拼一个新的整数,要求:
- 不以 开头(正常的十进制写法);
- 严格大于 ;
- 在满足前两条的数里最小。
不存在这样的数就输出 。
思路:把 的数字串 sort 成最小排列,然后不断 next_permutation,第一个比 大的就是答案——同长度的数字串比大小,字典序和数值大小是一回事;而比 大的排列不可能以 开头(以 开头的同长数字串数值上比 小,会被自动跳过)。
输入格式
一行一个正整数 ()。
输出格式
一行:重排出的比 大的最小整数;无解输出 。
样例
输入:
12354
输出:
12435
12354 的数字重排里,比它大的最小的数是 12435。
数据范围
。数字最多 个、不同排列最多几十万个,从最小排列起逐个 next_permutation 完全来得及;一个数字都换不出更大的(如全同数字、输入已是最大排列)就输出 。