1 条题解

  • -8
    @ 2026-4-29 12:43:14

    本题的定位不是难题,旨在帮助选手追忆基本的计数技巧,虽然正赛已有多年没考如此传统的计数,但适当练练还是有用的。

    本题的出题灵感来自下面这个广为人知的式子:

    $$\sum_{i=1}^n \mu^2(i) = \sum_{i=1}^n \mu(i) \lfloor \dfrac{n}{i^2} \rfloor $$

    其中,等式左边的意义是计算 1n1 \sim n 中无大于 11 的平方因子的数的个数,而右边则是考虑对每个数的平方因子进行容斥,枚举每个数的某一个平方因子 ii,统计所有 i2i^2 的倍数,再带个 μ(i)\mu(i) 的容斥系数。容易发现,对于一个数 xx,满足 v(x)=j=1tpjαjv(x) = \prod_{j = 1}^t p_j^{\alpha_j},则右式

    会将其统计 j=0t(1)j(tj)=0t=[t=0]\sum_{j = 0}^t (-1)^j \binom{t}{j} = 0^t = [t = 0] 次,正好符合左式的计数意义。

    很容易将其推广到特殊性质 B,注意到性质 B 实际上就是算 i=1nμ2(i)ik\sum_{i=1}^n \mu^2(i) i^k

    则上式 $=\sum_{i=1}^n \mu(i) \sum_{i^2 | x} x^k = \sum_{i=1}^n \mu(i)i^{2k}S(\lfloor \dfrac{n}{i^2} \rfloor)$

    其中 S(n)=1k+2k++nkS(n) = 1^k + 2^k + \dots + n^k 为自然数等幂和。

    那么对于一般情况呢?注意到上面的容斥其实只是莫比乌斯反演的特殊情形,我们完全可以利用 Dirichlet 积与反演工具,手动构造容斥系数。

    具体地,我们构造一个序列 bib_i 使得 an=dnbda_n = \sum_{d | n} b_d

    $$\begin{aligned}\sum_{i = 1}^n a_{v(i)}i^k &= \sum_{i = 1}^n \sum_{d | v(i)} b_d i^k \\&= \sum_{i=1}^n\sum_{d^2 | i} b_di^k \\&= \sum_{d = 1}^{\lfloor \sqrt n \rfloor}b_dd^{2k}S(\lfloor \dfrac{n}{d^2} \rfloor) \end{aligned} $$

    上面利用到了 dv(i)d2id | v(i) \Leftrightarrow d^2 | i 的数论事实,将 ii 作质因数分解即可证明。

    那如何得到这个序列 bb?注意到 a=b1a = b \circ 1,那么 b=aμb = a \circ \mu\circ 为 Dirichlet 卷积),可以在 O(mlogm)O(m \log m)O(mloglogm)O(m \log \log m) 的时间内得到序列 bb

    现在问题归结为如何对 dnd \le \sqrt nS(nd2)S(\lfloor \dfrac{n}{d^2} \rfloor)

    我们知道,利用拉格朗日插值,单个 S(n)S(n) 容易在 O(k)O(k) 时间算出,但我们没必要对每个 dd 都这么算,可以在 nd2\dfrac{n}{d^2} 较小时直接预处理 SS。 标程中选择在 nd2n2/3\dfrac{n}{d^2} \le n^{2/3} 时预处理 SS,这样只需要对 O(n1/6)O(n^{1/6})dd 进行拉格朗日插值,总时间复杂度 O(mlogm+n2/3+kn1/6)O(m \log m + n^{2/3} + kn^{1/6}),可以通过本题。(注意使用线性筛来做到 O(n2/3lnklnn)O(n^{2/3} \dfrac{\ln k}{\ln n}) 预处理 SS,不要直接使用快速幂)

    注:本题还有一种化式子的方法,可以得到一种更复杂的做法:

    $\sum_{i=1}^n a_{v(i)}i^k = \sum_{d = 1}^{\lfloor \sqrt n \rfloor} a_dd^{2k} \sum_{i=1}^{\lfloor \frac{n}{d^2} \rfloor} \mu^2(i)i^k$

    f(x)=μ2(x)xkf(x) = \mu^2(x)x^k,显然其是积性函数,且满足用 min_25 筛求前缀和的条件,故可以用 min_25 筛算出 $\sum_{i=1}^{\lfloor \frac{n}{d^2} \rfloor} \mu^2(i)i^k$

    但 min_25 筛要求对每个 ii 算出 S(ni)S(\lfloor \dfrac{n}{i} \rfloor),且筛法本身复杂度为 O(n3/4lnn)O(\dfrac{n^{3/4}}{\ln n}) ,导致总体时间复杂度稍劣。

    • 1

    信息

    ID
    11
    时间
    3000ms
    内存
    1024MiB
    难度
    9
    标签
    递交数
    547
    已通过
    48
    上传者