莫反习题整理

如题。本文主要整理莫反习题的做法以及一些推式子技巧。

P2522 [HAOI2011] Problem b

题目让我们求

i=abj=cd[gcd(i,j)=k]\sum_{i=a}^{b}\sum_{j=c}^{d}[\gcd(i,j)=k]

我们只需要会求

i=1xj=1y[gcd(i,j)=k]\sum_{i=1}^{x}\sum_{j=1}^{y}[\gcd(i,j)=k]

然后容斥一下就好了。

i=1xj=1y[gcd(i,j)=k]=i=1x/kj=1y/k[gcd(i,j)=1]=i=1x/kj=1y/kdi,djμ(d)=i=1x/kj=1y/kdμ(d)[di][dj]=dμ(d)i=1x/k[di]j=1y/k[dj]=d=1min{x/k,y/k}μ(d)xkdykd\begin{aligned} \sum_{i=1}^{x}\sum_{j=1}^{y}[\gcd(i,j)=k] & = \sum_{i=1}^{x/k}\sum_{j=1}^{y/k}[\gcd(i,j)=1] \\ & = \sum_{i=1}^{x/k}\sum_{j=1}^{y/k}\sum_{d|i,d|j}\mu(d) \\ & = \sum_{i=1}^{x/k}\sum_{j=1}^{y/k}\sum_{d}\mu(d)[d|i][d|j] & \cdots\cdots\text{①} \\ & = \sum_{d}\mu(d)\sum_{i=1}^{x/k}[d|i]\sum_{j=1}^{y/k}[d|j] \\ & = \sum_{d=1}^{\min\{\lfloor x/k\rfloor ,\lfloor y/k\rfloor \}}\mu(d)\left\lfloor\frac{x}{kd}\right\rfloor\left\lfloor\frac{y}{kd}\right\rfloor \end{aligned}

技巧:在不会跳步的时候,建议使用 ① 处方法,使用艾弗森括号代替 \sum 下的条件进行求和顺序的交换。

P3455 [POI2007] ZAP-Queries

同 P2522。

P2257 YY的GCD

i=1nj=1m[gcd(i,j) is prime]=p is primei=1nj=1m[gcd(i,j)=p]=p is primei=1n/pj=1m/p[gcd(i,j)=1]=p is primei=1n/pj=1m/pdi,djμ(d)=p is primedμ(d)ndpmdp=qnqmqpq,p is primeμ(qp)\begin{aligned} \sum_{i=1}^{n}\sum_{j=1}^{m}[\gcd(i,j)\text{ is prime}] & = \sum_{p\text{ is prime}}\sum_{i=1}^{n}\sum_{j=1}^{m}[\gcd(i,j)=p] \\ & = \sum_{p\text{ is prime}}\sum_{i=1}^{n/p}\sum_{j=1}^{m/p}[\gcd(i,j)=1] \\ & = \sum_{p\text{ is prime}}\sum_{i=1}^{n/p}\sum_{j=1}^{m/p}\sum_{d|i,d|j}\mu(d) \\ & = \sum_{p\text{ is prime}}\sum_{d}\mu(d)\left\lfloor\frac{n}{dp}\right\rfloor\left\lfloor\frac{m}{dp}\right\rfloor \\ & = \sum_{q}\left\lfloor\frac{n}{q}\right\rfloor\left\lfloor\frac{m}{q}\right\rfloor\sum_{p|q,p\text{ is prime}}\mu(\frac{q}{p}) & \cdots\cdots\text{①} \end{aligned}

观察到

f(x)=px,p is primeμ(xp)f(x) = \sum_{p|x,p\text{ is prime}}\mu(\frac{x}{p}) \\

是积性函数。对其进行线性筛然后整除分块处理原式即可。

技巧: ① 处,考虑到下取整除法的分母是 dpdp,于是令 q=dpq=dp 转而枚举 qq,便于进行整除分块。

SP5971 LCMSUM - LCM Sum

i=1nlcm(i,n)=ni=1nigcd(i,n)=ndn1di=1ni[gcd(i,n)=d]=ndn1di=1n/did[gcd(i,nd)=1]=ndni=1n/diki,kndμ(k)=ndni=1n/dik[ki][dkn]μ(k)=ndnkndkμ(k)i=1n/kdi令 f(x)=x(x+1)2, 则原式=ndnkndkμ(k)f(nkd)=nqnf(nq)kqkμ(k)令 g(x)=kxkμ(k), 则原式=nqng(q)f(nq)\begin{aligned} \sum_{i=1}^{n}\operatorname{lcm}(i,n) & = n\sum_{i=1}^{n}\frac{i}{\gcd(i,n)} \\ & = n\sum_{d|n}\frac{1}{d}\sum_{i=1}^{n}i[\gcd(i,n)=d] \\ & = n\sum_{d|n}\frac{1}{d}\sum_{i=1}^{n/d}id[\gcd(i,\frac{n}{d})=1] \\ & = n\sum_{d|n}\sum_{i=1}^{n/d}i\sum_{k|i,k|\frac{n}{d}}\mu(k) \\ & = n\sum_{d|n}\sum_{i=1}^{n/d}i\sum_k[k|i][dk|n]\mu(k) \\ & = n\sum_{d|n}\sum_{k|\frac{n}{d}}k\mu(k)\sum_{i=1}^{n/kd}i \\ \text{令 }f(x) & = \frac{x(x+1)}{2},\text{ 则} \\ \text{原式} & = n\sum_{d|n}\sum_{k|\frac{n}{d}}k\mu(k)f(\frac{n}{kd}) \\ & = n\sum_{q|n}f(\frac{n}{q})\sum_{k|q}k\mu(k) \\ \text{令 }g(x) & = \sum_{k|x}k\mu(k),\text{ 则} \\ \text{原式} & = n\sum_{q|n}g(q)f(\frac{n}{q}) \end{aligned}

观察到 gg 是积性函数,线性筛出它。

答案是卷积形式,用类似埃氏筛的方法预处理出它。

P1829 [国家集训队] Crash 的数字表格 / JZPTAB

不妨设 nmn\le m

S(x)=x(x+1)2S(x)=\frac{x(x+1)}{2}

i=1nj=1mlcm(i,j)=i=1nj=1mijgcd(i,j)=d=1n1di=1nj=1mij[gcd(i,j)=d]=d=1ndi=1n/dj=1m/dij[gcd(i,j)=1]=d=1ndi=1n/dj=1m/dijki,kjμ(k)=d=1ndk=1n/dk2μ(k)i=1ndkij=1mdkj=d=1ndk=1n/dk2μ(k)S(ndk)S(mdk)=g=1ngS(ng)S(mg)kgkμ(k)\begin{aligned} \sum_{i=1}^{n}\sum_{j=1}^{m}\operatorname{lcm}(i,j) & = \sum_{i=1}^{n}\sum_{j=1}^{m}\frac{ij}{\gcd(i,j)} \\ & = \sum_{d=1}^{n}\frac{1}{d}\sum_{i=1}^{n}\sum_{j=1}^{m}ij[\gcd(i,j)=d] \\ & = \sum_{d=1}^{n}d\sum_{i=1}^{n/d}\sum_{j=1}^{m/d}ij[\gcd(i,j)=1] \\ & = \sum_{d=1}^{n}d\sum_{i=1}^{n/d}\sum_{j=1}^{m/d}ij\sum_{k|i,k|j}\mu(k) \\ & = \sum_{d=1}^{n}d\sum_{k=1}^{n/d}k^2\mu(k)\sum_{i=1}^{\frac{n}{dk}}i\sum_{j=1}^{\frac{m}{dk}}j \\ & = \sum_{d=1}^{n}d\sum_{k=1}^{n/d}k^2\mu(k)S(\left\lfloor\frac{n}{dk}\right\rfloor)S(\left\lfloor\frac{m}{dk}\right\rfloor) \\ & = \sum_{g=1}^{n}gS(\left\lfloor\frac{n}{g}\right\rfloor)S(\left\lfloor\frac{m}{g}\right\rfloor)\sum_{k|g}k\mu(k) \end{aligned}

因为

f(x)=kxkμ(k)f(x)=\sum_{k|x}k\mu(k)

是积性函数,我们线性筛出它即可。

P3327 [SDOI2015]约数个数和

不妨设 nmn\le m

i=1nj=1md(ij)=i=1nj=1mxiyj[gcd(x,y)=1]=i=1nj=1mxy[xi][yj][gcd(x,y)=1]=x=1ny=1m[gcd(x,y)=1]nxmy=x=1ny=1mdx,dyμ(d)nxmy=dμ(d)x=1n/dy=1m/dndxmdy=d=1nμ(d)x=1n/dndxy=1m/dmdy\begin{aligned} \sum_{i=1}^{n}\sum_{j=1}^{m}d(ij) & = \sum_{i=1}^{n}\sum_{j=1}^{m}\sum_{x|i}\sum_{y|j}[\gcd(x,y)=1] \\ & = \sum_{i=1}^{n}\sum_{j=1}^{m}\sum_x\sum_y[x|i][y|j][\gcd(x,y)=1] \\ & = \sum_{x=1}^{n}\sum_{y=1}^{m}[gcd(x,y)=1]\left\lfloor\frac{n}{x}\right\rfloor\left\lfloor\frac{m}{y}\right\rfloor \\ & = \sum_{x=1}^{n}\sum_{y=1}^{m}\sum_{d|x,d|y}\mu(d)\left\lfloor\frac{n}{x}\right\rfloor\left\lfloor\frac{m}{y}\right\rfloor \\ & = \sum_{d}\mu(d)\sum_{x=1}^{n/d}\sum_{y=1}^{m/d}\left\lfloor\frac{n}{dx}\right\rfloor\left\lfloor\frac{m}{dy}\right\rfloor \\ & = \sum_{d=1}^{n}\mu(d)\sum_{x=1}^{n/d}\left\lfloor\frac{n}{dx}\right\rfloor\sum_{y=1}^{m/d}\left\lfloor\frac{m}{dy}\right\rfloor \end{aligned}

使用整除分块预处理

f(x)=i=1xxif(x)=\sum_{i=1}^{x}\left\lfloor\frac{x}{i}\right\rfloor

因此,

i=1nj=1md(ij)=d=1nμ(d)x=1n/dndxy=1m/dmdy=d=1nμ(d)f(nd)f(md)\begin{aligned} \sum_{i=1}^{n}\sum_{j=1}^{m}d(ij) & = \sum_{d=1}^{n}\mu(d)\sum_{x=1}^{n/d}\left\lfloor\frac{n}{dx}\right\rfloor\sum_{y=1}^{m/d}\left\lfloor\frac{m}{dy}\right\rfloor \\ & = \sum_{d=1}^{n}\mu(d)f(\left\lfloor\frac{n}{d}\right\rfloor)f(\left\lfloor\frac{m}{d}\right\rfloor) \end{aligned}

整除分块处理每个询问即可。

P3312 [SDOI2014]数表

先不考虑 a\le a 的限制条件。

f(d)f(d) 表示 dd 的约数和。

不妨设 nmn\le m

i=1nj=1mdi,djd=d=1nf(d)i=1n/dj=1m/d[gcd(i,j)=1]=d=1nf(d)i=1n/dj=1m/dki,kjμ(k)=d=1nf(d)k=1nμ(k)ndkmdk=q=1nnqmqdqf(d)μ(qd)\begin{aligned} \sum_{i=1}^{n}\sum_{j=1}^{m}\sum_{d|i,d|j}d & = \sum_{d=1}^{n}f(d)\sum_{i=1}^{n/d}\sum_{j=1}^{m/d}[\gcd(i,j)=1] \\ & = \sum_{d=1}^{n}f(d)\sum_{i=1}^{n/d}\sum_{j=1}^{m/d}\sum_{k|i,k|j}\mu(k) \\ & = \sum_{d=1}^{n}f(d)\sum_{k=1}^{n}\mu(k)\left\lfloor\frac{n}{dk}\right\rfloor\left\lfloor\frac{m}{dk}\right\rfloor \\ & = \sum_{q=1}^{n}\left\lfloor\frac{n}{q}\right\rfloor\left\lfloor\frac{m}{q}\right\rfloor\sum_{d|q}f(d)\mu\left(\frac{q}{d}\right) \end{aligned}

g(x)=dxf(d)μ(xd)g(x)=\sum_{d|x}f(d)\mu\left(\frac{x}{d}\right)

对于每个询问,只有 a\le af(d)f(d) 才会被统计到。

那么,我们预处理出所有的 f(x)f(x) 并进行排序,然后将询问离线按 aa 排序。

每次 aa 增加的时候,对影响到的 g(x)g(x) 累加贡献。

我们需要快速单点修改 g(x)g(x),并快速得到 g(x)g(x) 的前缀和。

使用树状数组维护 g(x)g(x) 即可。

P4449 于神之怒加强版

不妨设 nmn\le m

i=1nj=1mgcd(i,j)k=ddki=1nj=1m[gcd(i,j)=d]=ddki=1n/dj=1m/d[gcd(i,j)=1]=ddki=1n/dj=1m/dgi,gjμ(g)=d=1ndkg=1n/dμ(g)ndgmdg=h=1nnhmhdhdkμ(hd)\begin{aligned} \sum_{i=1}^{n}\sum_{j=1}^{m}\gcd(i,j)^k & = \sum_{d}d^k\sum_{i=1}^{n}\sum_{j=1}^{m}[\gcd(i,j)=d] \\ & = \sum_{d}d^k\sum_{i=1}^{n/d}\sum_{j=1}^{m/d}[\gcd(i,j)=1] \\ & = \sum_{d}d^k\sum_{i=1}^{n/d}\sum_{j=1}^{m/d}\sum_{g|i,g|j}\mu(g) \\ & = \sum_{d=1}^{n}d^k\sum_{g=1}^{n/d}\mu(g)\left\lfloor\frac{n}{dg}\right\rfloor\left\lfloor\frac{m}{dg}\right\rfloor \\ & = \sum_{h=1}^{n}\left\lfloor\frac{n}{h}\right\rfloor\left\lfloor\frac{m}{h}\right\rfloor\sum_{d|h}d^k\mu\left(\frac{h}{d}\right) \end{aligned}

观察到

f(x)=dxdkμ(xd)f(x)=\sum_{d|x}d^k\mu\left(\frac{x}{d}\right)

是积性函数。于是我们用线性筛、快速幂预处理出它。然后整除分块处理每个询问即可。

P3768 简单的数学题

i=1nj=1nijgcd(i,j)=ddi=1nj=1nij[gcd(i,j)=d]=dd3i=1n/dj=1n/dij[gcd(i,j)=1]=dd3i=1n/dj=1n/dijgi,gjμ(g)=d=1nd3gg2μ(g)i=1n/dgij=1n/dgj\begin{aligned} \sum_{i=1}^{n}\sum_{j=1}^{n}ij\gcd(i,j) & = \sum_{d}d\sum_{i=1}^{n}\sum_{j=1}^{n}ij[\gcd(i,j)=d] \\ & = \sum_{d}d^3\sum_{i=1}^{n/d}\sum_{j=1}^{n/d}ij[gcd(i,j)=1] \\ & = \sum_{d}d^3\sum_{i=1}^{n/d}\sum_{j=1}^{n/d}ij\sum_{g|i,g|j}\mu(g) \\ & = \sum_{d=1}^{n}d^3\sum_{g}g^2\mu(g)\sum_{i=1}^{n/dg}i\sum_{j=1}^{n/dg}j \end{aligned}

S(x)=i=1xij=1xj=x2(x+1)24S(x)=\sum_{i=1}^{x}i\sum_{j=1}^{x}j = \frac{x^2(x+1)^2}{4}

d=1nd3gg2μ(g)i=1n/dgij=1n/dgj=d=1nd3gg2μ(g)S(ndg)=k=1nS(nk)dkd3(kd)2μ(kd)=k=1nk2S(nk)dkdμ(kd)=k=1nk2S(nk)φ(k)\begin{aligned} \sum_{d=1}^{n}d^3\sum_{g}g^2\mu(g)\sum_{i=1}^{n/dg}i\sum_{j=1}^{n/dg}j & = \sum_{d=1}^{n}d^3\sum_{g}g^2\mu(g)S(\left\lfloor\frac{n}{dg}\right\rfloor) \\ & = \sum_{k=1}^{n}S(\left\lfloor\frac{n}{k}\right\rfloor)\sum_{d|k}d^3\left(\frac{k}{d}\right)^2\mu\left(\frac{k}{d}\right) \\ & = \sum_{k=1}^{n} k^2 S(\left\lfloor\frac{n}{k}\right\rfloor)\sum_{d|k}d\mu\left(\frac{k}{d}\right) \\ & = \sum_{k=1}^{n} k^2 S(\left\lfloor\frac{n}{k}\right\rfloor) \varphi(k) \end{aligned}

注意到

f(x)=x2φ(x)f(x)=x^2\varphi(x)

是积性函数。

观察数据范围,线性筛 ff 不行,需要杜教筛。


对于杜教筛:令 f(x)=x2φ(x)f(x)=x^2\varphi(x)s(x)=i=1xf(x)s(x)=\sum_{i=1}^{x}f(x)

i=1n(fg)(i)=i=1ndig(d)f(i/d)=d=1ng(d)i=1n/df(i)=d=1ng(d)s(n/d)s(n)g(1)=i=1n(fg)(i)d=2ng(d)s(n/d)\begin{aligned} \sum_{i=1}^n (f*g)(i) & = \sum_{i=1}^{n}\sum_{d|i} g(d)f(i/d) \\ & = \sum_{d=1}^{n} g(d)\sum_{i=1}^{n/d}f(i)\\ & = \sum_{d=1}^{n} g(d)s(n/d) \\ \therefore s(n)g(1) & = \sum_{i=1}^{n}(f*g)(i)-\sum_{d=2}^{n}g(d)s(n/d)\\ \end{aligned}

g(x)=x2g(x)=x^2,则

(fg)(x)=dxf(d)g(x/d)=x2dxφ(d)=x3i=1x(fg)(i)=x2(x+1)24\begin{aligned} (f*g)(x) & = \sum_{d|x}f(d)g(x/d)\\ & = x^2\sum_{d|x}\varphi(d) \\ & = x^3 \\ \therefore \sum_{i=1}^{x}(f*g)(i)&=\frac{x^2(x+1)^2}{4} \end{aligned}

P3704 [SDOI2017]数字表格

不妨设 nmn\le m

i=1nj=1mfgcd(i,j)=dfdi=1nj=1m[gcd(i,j)=d]=d=1nfdi=1n/dj=1m/d[gcd(i,j)=1]i=1n/dj=1m/d[gcd(i,j)=1]=i=1n/dj=1m/dgi,gjμ(g)=g=1n/dμ(g)ngdmgdi=1nj=1mfgcd(i,j)=d=1nfdg=1n/dμ(g)ngdmgd=k=1ndkfdnkmkμ(kd)=k=1n(dkfdμ(kd))nkmk\begin{aligned} \prod_{i=1}^{n}\prod_{j=1}^{m}f_{\gcd(i,j)} & = \prod_{d}f_d^{\sum_{i=1}^{n}\sum_{j=1}^{m}[\gcd(i,j)=d]} \\ & = \prod_{d=1}^{n}f_{d}^{\sum_{i=1}^{n/d}\sum_{j=1}^{m/d}[\gcd(i,j)=1]} \\ \sum_{i=1}^{n/d}\sum_{j=1}^{m/d}[\gcd(i,j)=1] & = \sum_{i=1}^{n/d}\sum_{j=1}^{m/d}\sum_{g|i,g|j}\mu(g) \\ & = \sum_{g=1}^{n/d}\mu(g)\left\lfloor\frac{n}{gd}\right\rfloor\left\lfloor\frac{m}{gd}\right\rfloor \\ \therefore \prod_{i=1}^{n}\prod_{j=1}^{m}f_{\gcd(i,j)} & = \prod_{d=1}^{n}f_d^{\sum_{g=1}^{n/d}\mu(g)\left\lfloor\frac{n}{gd}\right\rfloor\left\lfloor\frac{m}{gd}\right\rfloor} \\ & = \prod_{k=1}^{n}\prod_{d|k}f_d^{\left\lfloor\frac{n}{k}\right\rfloor\left\lfloor\frac{m}{k}\right\rfloor\mu(\left\lfloor\frac{k}{d}\right\rfloor)} \\ & = \prod_{k=1}^{n}\left(\prod_{d|k}f_d^{\mu(\left\lfloor\frac{k}{d}\right\rfloor)}\right)^{\left\lfloor\frac{n}{k}\right\rfloor\left\lfloor\frac{m}{k}\right\rfloor} \end{aligned}

用类似埃氏筛的方法预处理

g(x)=dxfdμ(xd)g(x)=\prod_{d|x}f_d^{\mu(\left\lfloor\frac{x}{d}\right\rfloor)}

即可。询问用整除分块。

注意对指数 nkmk\left\lfloor\frac{n}{k}\right\rfloor\left\lfloor\frac{m}{k}\right\rfloor 取模时使用费马小定理 ap11 (mod p)a^{p-1}\equiv 1\ (\bmod\ p)