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\),即是若倍数大于四的话显然不可能构成最大集合。

浙公网安备 33010602011771号