丑数 III
题目地址
解题思路
本题的关键还是在于求$f(mid)=count$(数字在范围[1,mid]区间,包含的丑数个数为count)
比如:
输入:n = 3, a = 2, b = 3, c = 5
此时就有:$f(1)=0$,$f(2)=1$,$f(3)=2$,$f(4)=3$,$f(5)=3$
可以看到,这个函数是一个单调不递减的,有单调性自然就可以用二分搜索了。
根据容斥原理,可以列出此方程为:
$f(mid)=mid / a + mid / b + mid / c - mid / lcm\underline{\hspace{.05in}}{ab} - mid / lcm\underline{\hspace{.05in}}{ac} - mid / lcm\underline{\hspace{.05in}}{bc} + mid / lcm\underline{\hspace{.05in}}{abc}$
其中lcm
表示最小公倍数。
代码实现
1 | import math |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Gua!
评论