1 条题解

  • 0
    @ 2025-8-24 22:26:39

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar command_block
    众水皆昂首,饮月唯我一。

    搬运于2025-08-24 22:26:39,当前版本为作者最后更新于2020-11-28 18:38:48,作者可能在搬运后再次修改,您可在原文处查看最新版

    自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多

    以下是正文


    题意:给出 mm 项多项式 P(x)P(x) 以及常数 cc

    定义 s(n)=i=1nP(i)[in]s(n)=\sum_{i=1}^nP(i)[i\perp n]

    给出 tt,分别求 s(c),s(c2),...,s(ct)s(c),s(c^2),...,s(c^t) 的值。

    答案对 998244353998244353 取模,t,m2×105t,m\leq 2\times 10^5c1018c\leq 10^{18},时限1s\texttt{1s}


    • 前置知识:Chirp Z-Transform

      给出多项式 F(x)F(x) 和常数 cc,可以卷积求出 F(1),F(c),F(c2),,F(cm1)F(1),F(c),F(c^2),\dots,F(c^{m-1})


    $$\begin{aligned} s(n) &=\sum_{i=1}^nP(i)[i\perp n]\\ &=\sum_{i=1}^nP(i)\sum_{d|n,d|i}\mu(d)\\ &=\sum_{d|n}\mu(d)\sum_{d|i}^nP(i)\\ &=\sum_{d|n}\mu(d)\sum_{d|i}^n\sum_{j=0}^{m-1}P[j]i^j\\ &=\sum_{d|n}\mu(d)\sum_{i=1}^{n/d}\sum_{j=0}^{m-1}P[j](id)^j\\ &=\sum_{j=0}^{m-1}P[j]\sum_{d|n}\mu(d)d^j\,\boxed{\sum_{i=1}^{n/d}i^j} \end{aligned} $$

    后面的部分是自然数幂和。


    自然数幂和的多项式为

    $$\sum\limits_{i=0}^{n-1}i^k=S_k(n)=k!\sum\limits_{i=0}^k\dfrac{B[k-i]n^{i+1}}{(i+1)!} $$

    其中 BB 为伯努利数。它的的 EGF 为 xex1\frac{x}{e^x-1},其可以多项式求逆计算。

    注意到只能对 [0,n1][0,n-1] 求和,而且我们需要的是对 [1,n][1,n] 求和。 需要对 0,n0,n 两项单独计算。


    • 微调后的求和

    先考虑

    $$\begin{aligned} s'(n)&=\sum\limits_{j=0}^{m-1}P[j]\sum\limits_{d|n}\mu(d)d^j\sum\limits_{i=0}^{n/d-1}i^j\\ &=\sum\limits_{j=0}^{m-1}P[j]\sum\limits_{d|n}\mu(d)d^jj!\sum\limits_{i=0}^j\dfrac{B[j-i](n/d)^{i+1}}{(i+1)!}\\ &=\sum\limits_{j=0}^{m-1}P[j]j!\sum\limits_{i=0}^j\dfrac{B[j-i]}{(i+1)!}\sum\limits_{d|n}\mu(d)d^j(n/d)^{i+1}\\ &=\sum\limits_{j=0}^{m-1}P[j]j!\sum\limits_{i=0}^j\dfrac{B[j-i]n^{i+1}}{(i+1)!}\sum\limits_{d|n}\mu(d)d^{j-i-1}\\ &=\sum\limits_{j=0}^{m-1}P[j]j!\sum\limits_{i=0}^j\dfrac{B[i]n^{j-i+1}}{(j-i+1)!}\sum\limits_{d|n}\mu(d)d^{i-1} \end{aligned} $$

    考察积性函数 fk=(μidk)If_k=(\mu·id_k)*I,有

    fk(pc)=μ(1)idk(1)+μ(p)idk(p)=1pkf_k(p^c)=\mu(1)id_k(1)+\mu(p)id_k(p)=1-p^k

    不难发现 fk(n)f_k(n) 的取值只与 nn 的素因子集合有关。

    由于 ncn^cnn 的素因子集合相同,可推知 fk(nc)=fk(n)f_k(n^c)=f_k(n)

    $$s'(n)=\sum\limits_{j=0}^{m-1}P[j]j!\sum\limits_{i=0}^j\dfrac{B[i]n^{j-i+1}}{(j-i+1)!}f_{i-1}(n) $$

    ckc^k 替换 nn ,同时注意到 fi1(ck)=fi1(c)f_{i-1}(c^k)=f_{i-1}(c)

    $$s'(c^k)=\sum\limits_{j=0}^{m-1}P[j]j!\sum\limits_{i=0}^j\dfrac{B[i](c^k)^{j-i+1}}{(j-i+1)!}f_{i-1}(c) $$

    可以用 Prho\rm Prho 分解求解积性函数 f0(t1)(c)f_{0\sim(t-1)}(c),这部分复杂度为 O(c4+tω(c))O\big(\sqrt[4]{c}+t\omega(c)\big)

    不妨设 F[i]=fi1(c)F[i]=f_{i-1}(c)

    $$s'(c^k)=\sum\limits_{j=0}^{m-1}P[j]j!\sum\limits_{i=0}^j\dfrac{B[i]F[i](c^k)^{j-i+1}}{(j-i+1)!} $$

    暂时用 xx 替换 ckc^k

    $$R(x)=\sum\limits_{j=0}^{m-1}P[j]j!\sum\limits_{i=0}^j\dfrac{B[i]F[i]x^{j-i+1}}{(j-i+1)!} $$

    不难发现 P[j]j!B[i]F[i]P[j]j!B[i]F[i] 会贡献到 xji+1x^{j-i+1} 的系数处,这是个差卷积。

    计算出上述多项式之后,需要分别求 R(c),R(c2),...,R(ct)R(c),R(c^2),...,R(c^t) 的值。

    使用 Chirp Z-Transform 即可。


    • 单独计算 nkn^k
    $$\begin{aligned} s_1(n) &=\sum\limits_{j=0}^{m-1}P[j]\sum\limits_{d|n}\mu(d)d^j(n/d)^j\\ &=\sum\limits_{j=0}^{m-1}P[j]n^j\sum\limits_{d|n}\mu(d)\\ &=[n=1]\sum\limits_{j=0}^{m-1}P[j]\\ \end{aligned} $$
    • 单独计算 0k0^k
    $$\begin{aligned} s_0(n) &=\sum_{j=0}^{m-1}P[j]\sum_{d|n}\mu(d)d^j0^j\\ &=P[0]\sum_{d|n}\mu(d)\\ &=[n=1]P[0] \end{aligned} $$

    最终

    s(ck)=s(ck)+s1(ck)s0(ck)s(c^k)=s'(c^k)+s_1(c^k)-s_0(c^k)

    复杂度为 O((m+t)log(m+t)+c4+mω(c))O\big((m+t)\log(m+t)+\sqrt[4]{c}+m·\omega(c)\big)

    • 1

    信息

    ID
    5802
    时间
    1000ms
    内存
    128MiB
    难度
    7
    标签
    递交数
    0
    已通过
    0
    上传者