考虑N的数据范围较大,因此 O(n)枚举的方法是不可行的。
这道题中要求找到的 X 是可以等于 N 的,因此我们从高位往低位顺次枚举 N 的每一个数位,如果当前的数位比它后面那一位大,那么我们考虑把当前这一位减 1 ,后面的数位全补 9 即可。
例如: 12540−>(5>4)−>12499
但有的情况比较特殊,如 122200−>(2>0)−>122199
答案不合法,对于这种情况我们应该找到这一块连续的值,把第一个减 1 ,后面全补 9 即可
例如: 100−>(2>0)−>19999