CF1796C题解

思维题!

我们要找到一个集合内每两个数都能互相整除,显然大的那个数至少要是小的数的二倍,那么我们为了让这个集合内的数尽量多,肯定要让这个倍数最小,即为 \(2\),同时将集合内的最小数设为 \(l\)

由此我们得知最大的集合大小为 \(\log_{2}{\frac{r}{l}}\)

求最大的集合个数,即时求出一个满足乘上 \(\log_{2}{\frac{r}{l}}\)\(2\) 小于等于 \(r\) 的最大数减去 \(l\) 加上一个满足乘上 \(\log_{2}{\frac{r}{l}}\)\(3\) 小于等于 \(r\) 的最大数减去 \(l\) 的和。

为什么求最大集合数量的时候不需要求满足乘上 \(\log_{2}{\frac{r}{l}}\)\(4\) 以上的数呢?

因为 \(4=2^2\),即是若倍数大于四的话显然不可能构成最大集合。

posted @ 2023-06-06 18:07  Pwtking  阅读(21)  评论(0)    收藏  举报