给定一个正整数 n,请将 n 中的每位数字重新排列并组成一个新数,要求新数的值要小于 n,请找出所有符合要求的新数中最大的那个正整数,如果不存在这样的正整数,则输出 -1。
例 1:n = 312,312 中每位上的数字依次是 3、1、2,重新排列组成的新数有 321、231、213、132、123,新数中小于 312 的有 231、213、132、123,其中符合要求的最大正整数是 231;
例 2:n = 123,123 中每位上的数字依次是 1、2、3,重新排列组成的新数有 312、321、231、213、132,新数中不存在小于 123 的正整数,故输出 -1。
输入一个正整数 n(1 \le n \lt 2^{63})。
输出一个正整数,表示符合要求的最大正整数。
312
231
蓝桥杯十五届STEMA考试 C++试卷(24年3月)