1 条题解

  • 0
    @ 2025-8-24 22:40:15

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar Y_B_X
    ...

    搬运于2025-08-24 22:40:15,当前版本为作者最后更新于2022-10-05 23:02:13,作者可能在搬运后再次修改,您可在原文处查看最新版

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

    以下是正文


    原题链接

    题意: 给定 n,m5×105n,m\leq 5\times 10^5,求 $\displaystyle \left(\sum_{i=1}^n\sum_{j=1}^md(ij)\varphi(ij)\right)\bmod 10^9+7$。

    不妨设 nmn\leq m

    i=1nj=1md(ij)φ(ij)\sum_{i=1}^n\sum_{j=1}^md(ij)\varphi(ij) $$=\sum_{d=1}^n\sum_{i=1}^n\sum_{j=1}^md(ij)\dfrac{\varphi(i)\varphi(j)}{\varphi(d)}d[\gcd(i,j)=d] $$$$=\sum_{d=1}^n\dfrac{d}{\varphi(d)}\sum_{i=1}^{n/d}\sum_{j=1}^{m/d}d(ijd^2)\varphi(id)\varphi(jd)\sum_{k|i,k|j}\mu(k) $$$$=\sum_{T=1}^n\left(\sum_{d|T}\dfrac{d}{\varphi(d)}\mu(T/d)\right)\sum_{i=1}^{n/T}\sum_{j=1}^{m/T}d(ijT^2)\varphi(iT)\varphi(jT) $$

    设 $\displaystyle f(T)=\sum_{d|T}\dfrac{d}{\varphi(d)}\mu(T/d)$,然后把后面的因数个数拆开。

    $$=\sum_{T=1}^nf(T)\sum_{T|i,1\leq i\leq n}\sum_{T|j,1\leq j\leq m}\varphi(i)\varphi(j)d(ij) $$$$=\sum_{T=1}^nf(T)\sum_{T|i,1\leq i\leq n}\sum_{T|j,1\leq j\leq m}\varphi(i)\varphi(j)\sum_{a|i}\sum_{b|j}[\gcd(a,b)=1] $$$$=\sum_{T=1}^nf(T)\sum_{T|i,1\leq i\leq n}\sum_{T|j,1\leq j\leq m}\varphi(i)\varphi(j)\sum_{a|i}\sum_{b|j}\sum_{t|a,t|b}\mu(t) $$$$=\sum_{T=1}^nf(T)\sum_{T|i,1\leq i\leq n}\sum_{T|j,1\leq j\leq m}\varphi(i)\varphi(j)\sum_{t|i,t|j}\mu(t)d(i/t)d(j/t) $$

    由于 ti,Tit|i,T|i 等价于 lcm(t,T)i\operatorname{lcm}(t,T)|i,枚举 x=lcm(t,T)x=\operatorname{lcm}(t,T)

    $$\sum_{t=1}^n\mu(t)\sum_{t|x,1\leq x\leq n}\left(\sum_{x|i,1\leq i\leq n}\varphi(i)d(i/t)\right)\left(\sum_{x|j,1\leq j\leq m}\varphi(j)d(j/t)\right)\sum_{T=1}^nf(T)[\operatorname{lcm}(t,T)=x] $$

    直接枚举 tttxt|x,再枚举 xix|i 的复杂度是:

    $\sum\limits_{t=1}^n\sum\limits_{i=1}^{n/x}n/(xi)=\sum\limits_{t=1}^nn/x\ln(n/x)=O(n\ln^2 n)$

    所以只需对 t,xt,x 快速求出 $\displaystyle \sum_{T=1}^nf(T)[\operatorname{lcm}(t,T)=x]$。

    但其实我们只需对 μ(t)\mu(t) 非零的 tt 求值。

    再观察一下 $f(T)=\sum\limits_{d|T}\dfrac{d}{\varphi(d)}\mu(T/d)$,这显然是积性的。

    而 $f(p^k)=\begin{cases}-1+\dfrac{p}{p-1}=\dfrac{1}{p-1},&k=1\\ \dfrac{p^k}{\varphi(p^k)}-\dfrac{p^{k-1}}{\varphi(p^{k-1})}=0,&k\geq 2\end{cases}$,也即 f(T)f(T) 仅在 μ(T)\mu(T) 非零时有值。

    既然 $\mu(t)\neq 0,\mu(T)\neq 0,x=\operatorname{lcm}(t,T)$,则 μ(x)0\mu(x)\neq0

    所以我们只需要没有平方因子的 t,T,xt,T,x,求出 $\displaystyle \sum_{T=1}^nf(T)[\operatorname{lcm}(t,T)=x]$。

    x,t,Tx,t,T 的质因子集合分别为 Px,Pt,PTP_x,P_t,P_T,则 PtPT=PxP_t\cup P_T=P_x 且条件充要。

    所以 PTP_T 必由 PxPtP_x\setminus P_t 的全部元素与 PtP_t 的一部分拼成。

    因此 $\displaystyle \sum_{T=1}^nf(T)[\operatorname{lcm}(t,T)=x]=\left(\prod_{p\in P_x,p\not\in P_t}f(p)\right)\left(\prod_{p\in P_t}\left(f(p)+1\right)\right)$。

    最后面的 +1+1 就相当于 PtP_t 中的元素可选可不选。

    另设积性函数 $g(p)=f(p)+1=\dfrac{p}{p-1},g(n)=\prod\limits_{p|n}\dfrac{p}{p-1}$。

    则 $\displaystyle \sum_{T=1}^nf(T)[\operatorname{lcm}(t,T)=x]=f(x/t)g(t)$。

    线性预处理出 f,g,d,φ,μf,g,d,\varphi,\mu,便可 O(nln2n)O(n\ln^2 n) 做完了,空间线性。

    核心代码:

    for(t=1;t<=n;++t)if(mu[t]){
      res=0;
      for(x=t;x<=n;x+=t)if(mu[x]){
        sn=sm=0;
        for(i=x;i<=n;i+=x)add(sn,phi[i]*d[i/t]);
        for(i=x;i<=m;i+=x)add(sm,phi[i]*d[i/t]);
        add(res,1ll*sn*sm%mod*f[x/t]%mod*g[t]%mod);
      }
      add(ans,1ll*res*(mu[t]+mod)%mod);
    }
    

    评测记录 为什么时限不开 100ms

    但再仔细观察一下,把每次处理的 tt 的倍数拉出来,

    我们发现在对于 txt|xxx 做的事无非是一个整除的后缀和。

    因为在 tx,tit|x,t|i 时,xixtitx|i\Leftrightarrow \frac{x}{t}|\frac{i}{t}

    所以这部分能被一个 Dirichlet\text{Dirichlet} 后缀和优化掉。

    总时间复杂度降至 O(nlnnlnlnn)O(n\ln n\ln\ln n),虽然在数据范围只有 5×1055\times 10^5没太大区别

    核心代码:

    for(t=1;t<=n;++t)if(mu[t]){
      res=0;
      for(i=t;i<=n;i+=t)sn[i/t]=phi[i]*d[i/t];
      for(j=t;j<=m;j+=t)sm[j/t]=phi[j]*d[j/t];
      for(nn=n/t,k=1;k<=prm&&p[k]<=nn;++k)
        for(l=nn/p[k];l;--l)add(sn[l],sn[l*p[k]]);
      for(nn=m/t,k=1;k<=prm&&p[k]<=nn;++k)
        for(l=nn/p[k];l;--l)add(sm[l],sm[l*p[k]]);
      for(x=t;x<=n;x+=t)if(mu[x])
        add(res,1ll*sn[x/t]*sm[x/t]%mod*f[x/t]%mod*g[t]%mod);
      add(ans,1ll*res*(mu[t]+mod)%mod);
    }
    

    为什么数据范围不加个0

    • 1

    信息

    ID
    7866
    时间
    1500ms
    内存
    256MiB
    难度
    7
    标签
    递交数
    0
    已通过
    0
    上传者