如是,众生欢笑不已
P16141
根号分治,我们取 \(B = \sqrt{n}\) ,这样 \(\le B\) 的质数最多只有 \(14\) 个。
我们记 \(f_i\) 为 \(1 \sim i\) 都出现过的集合个数。
对于小质数,发现我们直接去统计似乎有点难做,但是去统计与这个质数数集不交的是 naive 的。
我们记 \(h_S\) 为不包含 \(S\) 这个数集的数量,于是我们一个高维前缀和就可以做到这个东西。
然后稍加子集反演即可得到:
\[f_i = \sum_{S \in \{1, 2, \cdots, i\}}{(-1)^{|S|}2^{h_S}}
\]
对于大质数,我们考虑这边对于每个数都至多出现一次。
我们记 \(g_{S, x}\) 为在 \(S\) 表示的数里为 \(x\) 的倍数的数的个数,可以暴力扫出来。
然后对于小质数上一个容斥,大质数统计。
最后只需再简单差分一下即可。

浙公网安备 33010602011771号