LC 878. 第 N 个神奇数字 (opens new window) (opens new window)
困难
# 问题描述
一个正整数如果能被 a
或 b
整除,那么它是神奇的。
给定三个整数 n
,a
, b
,返回第 n
个神奇的数字。因为答案可能很大,所以返回答案 对 109 + 7
取模 后的值。
示例 1:
输入:n = 1, a = 2, b = 3
输出:2
示例 2:
输入:n = 4, a = 2, b = 3
输出:6
提示:
1 <= n <= 109
2 <= a, b <= 4 * 104
# 二分查找
假设 为小于等于 的神奇数字的个数。
在区间 中,会有 个数能被 整除,有 个数会被 整除,某些数同时与 和 整除,整除个数为 个, 为 和 的最小公倍数。
根据容斥原理可得
显然 是单调递增的,因此可以使用二分查找找到某个 使得 。
- 时间复杂度:
- 空间复杂度:
上次更新: 2023/01/31 19:48:05
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 , 转载请注明出处!