如是,众生欢笑不已

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\) 的倍数的数的个数,可以暴力扫出来。

然后对于小质数上一个容斥,大质数统计。

最后只需再简单差分一下即可。

posted @ 2026-09-22 10:07  FailureG_QwQ  阅读(6)  评论(0)    收藏  举报