1201:丑数 III(2039 分)
目录
题目
丑数是可以被 a
或 b
或 c
整除的 正整数 。
给你四个整数:n
、a
、b
、c
,请你设计一个算法来找出第 n
个丑数。
示例 1:
输入:n = 3, a = 2, b = 3, c = 5 输出:4 解释:丑数序列为 2, 3, 4, 5, 6, 8, 9, 10... 其中第 3 个是 4。
示例 2:
输入:n = 4, a = 2, b = 3, c = 4 输出:6 解释:丑数序列为 2, 3, 4, 6, 8, 9, 10, 12... 其中第 4 个是 6。
示例 3:
输入:n = 5, a = 2, b = 11, c = 13 输出:10 解释:丑数序列为 2, 4, 6, 8, 10, 11, 12, 13... 其中第 5 个是 10。
提示:
1 <= n, a, b, c <= 109
1 <= a * b * c <= 1018
- 本题结果在
[1, 2 * 109]
的范围内
相似问题:
分析
观察数据范围容易想到用二分查找。
令 check(x) 代表小于等于 x 的丑数个数是否大于等于 n,那么二分查找第一个满足 check(x) 的 x 即可。
具体求小于等于 x 的丑数个数,则可以用到集合的知识。
解答
|
|
40 ms