660. 移除 9 🔒
难度困难
题目描述
从 1 开始,移除包含数字 9 的所有整数,例如 9,19,29,……
这样就获得了一个新的整数数列:1,2,3,4,5,6,7,8,10,11,……
给你一个整数 n,请你返回新数列中第 n 个数字是多少(下标从 1 开始)。
示例 1:
输入:n = 9 输出:10
示例 2:
输入:n = 10 输出:11
提示:
1 <= n <= 8 * 108
解法
方法一
思考
去掉所有含数字 \(9\) 的自然数后,求第 \(n\) 个剩余数。直接枚举到第 \(n\) 个合法数,\(n\) 可达 \(9\) 位数时过慢。
不含 \(9\) 等价于用 \(0..8\) 这九个符号计数,即把 \(n\) 写成九进制再按位解释。当前题解页尚未填入实现代码。
1 | |
1 | |
1 | |
1 | |