莫比乌斯反演

基础知识

  • 两个积性函数 \(f,g\) ,它们的 狄利克雷卷积(Dirichlet卷积)

\[h(n)=(f * g)(n)=\sum_{d|n} f(d)g(\frac{n}{d}) \]

记为 \(h=f*g\) .

  • 狄利克雷卷积满足 交换律,结合律,且得到的函数也是 积性函数

定义

\[\epsilon(n)=\lbrack n=1 \rbrack,I(n)=1,id(n)=n \]

\(\epsilon\) 即该运算意义下的单位元,因为一定有

\[g(n)=(f * \epsilon)(n)=\sum_{d|n}f(d)\epsilon(\frac{n}{d})=f(n) \]

\(g=f,f=f*\epsilon\) .


常用函数的三个结论:

  • \(\mu * I=\epsilon\)

即证

\[\sum_{d|n}\mu(d)=\lbrack n=1 \rbrack \]

\(n=1\) 时显然成立。

\(n=\prod_{i=1}^{m}{p_i}^{c_i}\) ,当 \(d\) 有平方因子 ( 不包括 \(1\) ) 时贡献为 \(0\) .

\(n'=\prod_{i=1}^{m}p_i\) ,求 \(\sum_{d|n'}\mu(d)\) 即可。

容易发现 \(n\) 的所有质因子有 \(2^m\) 种组合,枚举质因子的个数,即

\[\sum_{i=0}^{m}(-1)^i C(m,i)=(-1+1)^m=0 \]

得证。

  • \(\varphi * I=id\)

\(\sum_{d|n}\varphi(d)=n\) ,这里不写。

  • \(id * \mu=\varphi\)

用的不会很多。

利用狄利克雷卷积的结合律,在前一个式子的两边乘上一个 \(\mu\) ,由 \(\mu * I=\epsilon\) 可推该式。


P3455 [POI2007]ZAP-Queries

求满足 \(1 \leq a \leq n\)\(1 \leq b \leq m\),且 \(\gcd(a,b)=d\) 的二元组 \((a,b)\) 的数量。

\(1 \leq T \leq 5 \times 10^4\)\(1 \leq d \leq n,m \leq 5 \times 10^4\)


本文默认 \(n\le m\) .

\(n\rightarrow\lfloor\frac{n}{d}\rfloor,m\rightarrow\lfloor\frac{m}{d}\rfloor\) ,求

\[\sum_{i=1}^{n}\sum_{j=1}^{m}\lbrack gcd(i,j)=1 \rbrack \]

后面的艾弗森括号就等价于 \(\epsilon(gcd(i,j))\),展开得到

\[\sum_{i=1}^{n}\sum_{j=1}^{m}\sum_{d|gcd(i,j)}\mu(d) \]

\(d\) 提到前面:

\[\sum_{d=1}^{n}\mu(d)\lfloor \frac{n}{d}\rfloor\lfloor \frac{m}{d}\rfloor \]

预处理 \(\mu\) 并做前缀和,询问时 \(O(\sqrt{n})\) 整除分块即可。


P2257 YY的GCD

条件变成 \(gcd\) 为质数。

\(1 \leq T \leq 10^4\)\(1 \leq n,m \leq 10^7\)


枚举 \(gcd(i,j)\) 可得

\[\sum_{d=1}^{n}\lbrack d\in Prime\rbrack\sum_{i=1}^{\lfloor\frac{n}{d}\rfloor}\sum_{j=1}^{\lfloor \frac{m}{d}\rfloor}\lbrack gcd(i,j)=1\rbrack \]

\[\sum_{d=1}^{n}\lbrack d\in Prime\rbrack\sum_{p=1}^{\lfloor \frac{n}{d}\rfloor}\mu(p)\lfloor \frac{n}{dp}\rfloor\lfloor \frac{m}{dp}\rfloor \]

有一个trick,令 \(T=dp\) ,然后再把 \(T\) 提到前面去:

\[\sum_{T=1}^{n}\lfloor \frac{n}{T}\rfloor\lfloor \frac{m}{T}\rfloor\sum_{d|T}\mu(\frac{T}{d})\lbrack d\in Prime\rbrack \]

后半部分的东西可以 \(O(n\space log\space log\space n)\) 求出来,询问也是 \(O(\sqrt{n})\) 的。

还有trival的例题不写了。


莫比乌斯变换

  • \(g(n)=\sum_{d|n}f(d)\) ,则 \(f(n)=\sum_{d|n}g(d)\mu(\frac{n}{d})\) .

  • \(g(n)=\sum_{n|d}f(d)\) ,则 \(f(n)=\sum_{n|d}g(d)\mu(\frac{d}{n})\) .

这两个式子称为 莫比乌斯变换 。两个函数 不需要一定是积性函数

第一个:由 \(g=f * I\) 显然可以得到 \(f=g * \mu\) .

第二个:反推。

\[\sum_{n|d}g(d)\mu(\frac{n}{d}) \]

\[\sum_{d=1}\mu(d)g(nd) \]

\[\sum_{d=1}\mu(d)\sum_{nd|p}f(p) \]

\[\sum_{p=1}f(np)\sum_{d|p}\mu(d) \]

\[=f(n) \]


P3172 [CQOI2015]选数

一个长为 \(n\) ,值域为 \(L,R\) 的数列 \(A\) ,求

\[\sum_{A}\lbrack \gcd_{i=1}^{n}A_i=k\rbrack \]

\(n,L,R,k\le10^9,R-L\le10^5\) .


先将 \(L\rightarrow\lceil\frac{L}{k}\rceil\) , \(R\rightarrow\lfloor\frac{R}{k}\rfloor\) .

\(f(m)\)\(gcd\) 刚好为 \(m\) 的种数,\(g(m)\)\(gcd\)\(m\) 的倍数的种数,那么 \(f(1)\) 即为所求。

容易得到:

\[g(m)=\sum_{m|d}f(d) \]

\[f(m)=\sum_{m|d}\mu(\frac{d}{m})g(d) \]

想一下怎么得到每一个 \(g(m)\) .

显然就是

\[g(m)=(\lfloor\frac{R}{m}\rfloor-\lfloor\frac{L-1}{m}\rfloor)^n \]

答案是

\[f(1)=\sum_{i=1}\mu(i)g(i) \]

一样的 \(g\) 可以整除分块,所以要做 \(\mu\) 的前缀和。

要用杜教筛。


P3312 [SDOI2014]数表

\[\sum_{i=1}^{n}\sum_{j=1}^{m}\sigma_1(gcd(i,j))\lbrack \sigma_1(gcd(i,j))\le a\rbrack \]

\(\sigma_1\) 是因子之和。

\(T\le 2\times 10^4,n,m\le 10^5 ,|a|\le 10^9\) .

不考虑 \(a\) ,那么

\[\sum_{i=1}^{n}\sum_{j=1}^{m}\sigma_1(gcd(i,j)) \]

\[\sum_{d=1}^{n}\sigma_1(d)\sum_{p=1}^{\lfloor\frac{n}{d}\rfloor}\mu(d)\lfloor \frac{n}{dp}\rfloor\lfloor \frac{m}{dp}\rfloor \]

\[\sum_{T=1}^{n}\lfloor \frac{n}{T}\rfloor\lfloor \frac{m}{T}\rfloor\sum_{d|T}\sigma_1(d)\mu(\frac{n}{d}) \]

如果套上 \(a\) 直接做单次是 \(O(n\space log\space n)\) 的。

考虑离线,将所有的 \(\sigma_1(d)\) 和询问的 \(a\) 排序,更换询问时就能不重复地添加。

统计答案时要用到整除分块,所以应该得到一个区间和的形式,用树状数组实现操作。

这样复杂度就是 \(O(n\space log^2\space n+T\sqrt{n}\space log\space n)\) .


P3327 [SDOI2015]约数个数和

\[\sum_{i=1}^{n}\sum_{j=1}^{m}d(ij) \]

\(d\) 是约数个数,也可以写成 \(\sigma_0\) .


有结论:\(\displaystyle d(ij)=\sum_{x|i}\sum_{y|j}[x\perp y]\)

考虑一个质因子 \(p\),且 \(i=p^{\alpha}\)\(j=p^{\beta}\) 的情况。

发现两边都是 \(\alpha+\beta+1\),应该就能证了。

代回去:

\[\sum_{i=1}^{n}\sum_{j=1}^{m}\sum_{p|gcd(i,j)}\mu(p)d(\frac{i}{p})d(\frac{j}{p}) \]

\[\sum_{p=1}^{n}\mu(p)\sum_{i=1}^{\lfloor \frac{n}{p}\rfloor}\sum_{j=1}^{\lfloor \frac{m}{p}\rfloor}d(i)d(j) \]

就做完了。


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

\[\sum_{i=1}^{n}\sum_{j=1}^{m}lcm(i,j) \]

\(n,m\le 10^7\) .


\[\sum_{d=1}^{n}\sum_{i=1}^{n}\sum_{j=1}^{m}\frac{ij}{d}\lbrack gcd(i,j)=d\rbrack \]

\[\sum_{d=1}^{n}d\sum_{i=1}^{\lfloor\frac{n}{d}\rfloor}\sum_{j=1}^{\lfloor\frac{m}{d}\rfloor}ij\lbrack gcd(i,j)=1\rbrack \]

把后面那个东西提出来单独做式子看起来舒服方便一点。

\[S(n,m)=\sum_{i=1}^{n}\sum_{j=1}^{m}ij\lbrack gcd(i,j)=1\rbrack \]

\[\sum_{d=1}^{n}\mu(d)\cdot d^2\sum_{i=1}^{\lfloor\frac{n}{d}\rfloor}\sum_{j=1}^{\lfloor\frac{m}{d}\rfloor}ij \]

后半可以整除分块。

代回去:

\[\sum_{d=1}^{n}d\cdot S(\lfloor\frac{n}{d}\rfloor,\lfloor\frac{m}{d}\rfloor) \]

也可以整除分块。

分块套分块的复杂度是 \(O(n^{\frac{3}{4}})\) 的。


P4466 [国家集训队]和与积

\[\sum_{1\le a<b\le n}\lbrack a+b|\space ab\rbrack \]

\(n<2^{31}\) .


\(gcd(a,b)=1\) 时,显然有 \(a+b\not\mid ab\) .

\(a=di,b=dj\) ,那么 \(i+j\mid ijd\) .

因为 \(i+j\not\mid ij\) ,所以 \(i+j\mid d\).

\[\sum_{i=1}^{n}\sum_{j=1}^{i-1}\lfloor\frac{\lfloor\frac{n}{i}\rfloor}{i+j}\rfloor\lbrack gcd(i,j)=1\rfloor \]

\(i>\sqrt{n}\) 时里面式子就恒为 \(0\) 了。

\[\sum_{i=1}^{\sqrt{n}}\sum_{j=1}^{i-1}\lfloor\frac{\lfloor\frac{n}{i}\rfloor}{i+j}\rfloor\lbrack gcd(i,j)=1\rfloor \]

\[\sum_{i=1}^{\sqrt{n}}\sum_{j=1}^{i-1}\lfloor\frac{\lfloor\frac{n}{i}\rfloor}{i+j}\rfloor\sum_{p|i,p|j}\mu(p) \]

\[\sum_{p=1}^{\sqrt{n}}\mu(p)\sum_{i=1}^{\lfloor\frac{\sqrt{n}}{p}\rfloor}\sum_{j=1}^{i-1}\lfloor\frac{\lfloor\frac{n}{ip}\rfloor}{ip+jp}\rfloor \]

\[\sum_{p=1}^{\sqrt{n}}\mu(p)\sum_{i=1}^{\lfloor\frac{\sqrt{n}}{p}\rfloor}\sum_{j=1}^{i-1}\lfloor\frac{\lfloor\frac{n}{ip^2}\rfloor}{i+j}\rfloor \]

暴力枚举 \(p,i\) ,后面的式子是可以整除分块的。


P4213 【模板】杜教筛(Sum)

\[\sum_{i=1}^{n}\varphi(i) \]

\[\sum_{i=1}^{n}\mu(i) \]

\(T\le 10\) ,$ n<2^{31} $ .


设待求函数为 \(f\) ,其前缀和为 \(S\) ,且 \(h=f * g\) ,那么 \(h\) 的前缀和

\[\sum_{i=1}^{n}h(i)=\sum_{i=1}^{n}\sum_{d|i}g(d)f(\frac{i}{d}) \]

\[\sum_{d=1}^{n}g(d)S(\lfloor\frac{n}{d}\rfloor) \]

显然有

\[g(1)S(n)=\sum_{i=1}^{n}h(i)-\sum_{i=2}^{n}g(i)S(\lfloor\frac{n}{i}\rfloor) \]

任务是找到方便计算前缀和的 \(g,h\) ,简化原式的计算。

\(f=\varphi\) ,取 \(g=I,h=id\)\(h\) 的前缀和就是 \(\frac{n(n+1)}{2}\)\(g\) 的前缀和就是 \(n\) .

\(f=\mu\) ,取 \(g=I,h=\epsilon\)\(h\) 的前缀和就是 \(1\)

大概预处理 \(10^6\) 级别的答案,询问时暴力整除分块,得到的答案可以用 \(map\) 或者 \(unordered\space map\) 存下来.

代码不放,自己去贺。

复杂度是 \(O(n^{\frac{2}{3}})\) 的。


*P1587 [NOI2016] 循环之美

\(\sum_{x=1}^{n}\sum_{y=1}^{m}\)\(\frac{x}{y}\) 为最简分数,且在 \(k\) 进制下是纯循环小数或整数。

\(n,m\le10^9,2 \le k \le 2\times10^3\)


设循环节长度为 \(l\) ,则 \(\frac{x}{y}\)\(\frac{xk^l}{y}\) 的小数部分相等。

\[\frac{x}{y}-\lfloor\frac{x}{y}\rfloor=\frac{xk^l}{y}-\lfloor\frac{xk^l}{y}\rfloor \]

\[x-\lfloor\frac{x}{y}\rfloor* y=xk^l-\lfloor\frac{xk^l}{y}\rfloor* y \]

\[x\equiv xk^l\space (mod\space y) \]

\(\frac{x}{y}\) 为最简分数得 \(gcd(x,y)=1\) :

\[k^l\equiv 1\space (mod\space y) \]

答案就是

\[\sum_{i=1}^{n}\sum_{j=1}^{m}\lbrack gcd(i,j)=1\rbrack\lbrack gcd(j,k)=1\rbrack \]

其中的一种方法:

\[\sum_{j=1}^{m}\lbrack gcd(j,k)=1\rbrack\sum_{i=1}^{n}\sum_{d|gcd(i,j)}\mu(d) \]

\[\sum_{j=1}^{m}\lbrack gcd(j,k)=1\rbrack\sum_{d|j}^{n}\mu(d)\lfloor\frac{n}{d}\rfloor \]

\[\sum_{d=1}^{n}\mu(d)\lfloor\frac{n}{d}\rfloor\sum_{j=1}^{\lfloor\frac{m}{d}\rfloor}\lbrack gcd(dj,k)=1\rbrack \]

\[\sum_{d=1}^{n}\mu(d)\lfloor\frac{n}{d}\rfloor\lbrack gcd(d,k)=1\rbrack\sum_{j=1}^{\lfloor\frac{m}{d}\rfloor}\lbrack gcd(j,k)=1\rbrack \]

把后面那串式子记成

\[f(n)=\sum_{i=1}^{n}\lbrack gcd(i,k)=1\rbrack \]

显然有

\[f(n)=\lfloor\frac{n}{k}\rfloor\varphi(k)+f(n\space mod\space k) \]

\(k\) 以内的部分可以直接算。

考虑计算

\[g(n,k) =\sum_{d=1}^{n}\mu(d)\lbrack gcd(d,k)=1\rbrack \]

\[\sum_{d=1}^{n}\mu(d)\sum_{p|d,p|k}\mu(p) \]

\[\sum_{p|k}\mu(p)\sum_{p|d}\mu(d) \]

\[\sum_{p|k}\mu(p)\sum_{d=1}^{\lfloor\frac{n}{p}\rfloor}\mu(dp) \]

无效贡献对式子无影响,变成

\[\sum_{p|k}\mu(p)\sum_{d=1}^{\lfloor\frac{n}{p}\rfloor}\mu(dp)\lbrack gcd(d,p)=1\rbrack \]

\[\sum_{p|k}\mu(p)\sum_{d=1}^{\lfloor\frac{n}{p}\rfloor}\mu(d)\mu(p)\lbrack gcd(d,p)=1\rbrack \]

\[\sum_{p|k}\mu^2(p)\sum_{d=1}^{\lfloor\frac{n}{p}\rfloor}\mu(d)\lbrack gcd(d,p)=1\rbrack \]

\[\sum_{p|k}\mu^2(p)g(\lfloor\frac{n}{p}\rfloor,p) \]

边界值 \(g(0,k)=0\)\(g(n,1)=\sum_{d=1}^{n}\mu(d)\) .

然后就要用杜教筛。


P3768 简单的数学题

\[\sum_{i=1}^{n}\sum_{j=1}^{n}ij\cdot gcd(i,j) \]

答案对质数 \(p\) 取模 。


一个较妙的做法。

\[\sum_{i=1}^{n}\sum_{j=1}^{n}ij\cdot id(gcd(i,j)) \]

这里用到 \(\varphi * I =id\) .

\[\sum_{i=1}^{n}\sum_{j=1}^{n}ij\sum_{d|i,d|j}\varphi(d) \]

\[\sum_{d=1}^{n}\varphi(d)\sum_{d|i}\sum_{d|j}ij \]

\[\sum_{d=1}^{n}\varphi(d)\cdot d^2\cdot(\sum_{i=1}^{\lfloor\frac{n}{d}\rfloor}i)^2 \]

\(\lfloor\frac{n}{d}\rfloor\) 可以整除分块,里面的式子的前面和需要杜教筛。

也就是 \(f=\varphi\cdot id^2\) ,考虑取 \(g=id^2\) ,那么

\(h(n)=\sum_{d|n}f(d)g(\frac{n}{d})=n^2\cdot\sum_{d|n}\varphi(n)=n^3\) .

\(h=id^3\) .

然后杜教筛就不难了。


*P4240 毒瘤之神的考验

\[\sum_{i=1}^{n}\sum_{j=1}^{m}\varphi(ij) \]

\(T\le10^4,n,m\le10^5\) .


有个结论:

\[\varphi(ij)=\frac{\varphi(i)\varphi(j)d}{\varphi(d)} \]

\(d=(i,j)\) ,这个结论还是很好证的。

\[\sum_{d=1}^{n}\frac{d}{\varphi(d)}\sum_{i=1}^{\lfloor\frac{n}{d}\rfloor}\sum_{j=1}^{\lfloor\frac{m}{d}\rfloor}\varphi(id)\varphi(jd)\lbrack gcd(i,j)=1\rbrack \]

\[\sum_{d=1}^{n}\frac{d}{\varphi(d)}\sum_{p=1}^{\lfloor\frac{n}{d}\rfloor}\mu(p)\sum_{i=1}^{\lfloor\frac{n}{dp}\rfloor}\sum_{j=1}^{\lfloor\frac{m}{dp}\rfloor}\varphi(idp)\varphi(jdp) \]

\[\sum_{T=1}^{n}\sum_{d|T}\frac{d\mu(\frac{T}{d})}{\varphi(d)}\sum_{i=1}^{\lfloor\frac{n}{T}\rfloor}\varphi(iT)\sum_{j=1}^{\lfloor\frac{m}{T}\rfloor}\varphi(jT) \]

前面那坨函数记为 \(f(T)\) .

\(G(y,x)=\sum_{i=1}^{x}\varphi(iy)\) ,也就是

\[\sum_{T=1}^{n}f(T)\cdot G(\lfloor\frac{n}{T}\rfloor,T)\cdot G(\lfloor\frac{m}{T}\rfloor,T) \]

显然这个式子只能 \(O(n)\) ,直接T飞。

所以再记一个 \(S(y,z,x)=\sum_{T=1}^{x}f(T)\sum_{i=1}^{y}\varphi(iT)\sum_{j=1}^{z}\varphi(jT)\)

考虑递推,容易得到

\[G(y,x)=G(y,x-1)+\varphi(xy) \]

\[S(y,z,x)=S(y,z,x-1)+f(x)\cdot G(x,y)\cdot G(x,z) \]

接着就可以用牛逼分治,就是说设一个阈值 \(B\) ,对于 \(\lfloor\frac{n}{T}\rfloor\le B\) 的部分直接算,后面的再用分块算,有点不好看懂放个代码。

int query(int n,int m){
	if(n>m)swap(n,m);
	int ret=0;
	for(int i=1;i<=m/B;i++)
		(ret+=1ll*f[i]*G[i][n/i]%Mod*G[i][m/i]%Mod)%=Mod;
	for(int x=m/B+1,gx;x<=n;x=gx+1){
		gx=min(n/(n/x),m/(m/x));
		(ret+=(S[n/x][m/x][gx]-S[n/x][m/x][x-1]+Mod)%Mod)%=Mod;
	}
	return ret;
}

算下复杂度是 \(O(n\space ln\space n+nB^2+T(\sqrt{n}+\frac{n}{B}))\) .

平衡复杂度不太会算,应该是取 \(B=T^{\frac{1}{3}}\) ,平衡复杂度 \(O(n\space ln\space n+T\sqrt{n}+nT^{\frac{2}{3}})\) .

所以就是牛逼东西。


*P5572 [CmdOI2019]简单的数论题

这道题也是一样的trick.

\[\sum_{i=1}^{n}\sum_{j=1}^{m}\varphi\Big(\frac{lcm(i,j)}{gcd(i,j)}\Big) \]


\[\sum_{d=1}^{n}\sum_{i=1}^{\lfloor\frac{n}{d}\rfloor}\sum_{j=1}^{\lfloor\frac{m}{d}\rfloor}\varphi(ij)\lbrack gcd(i,j)=1\rbrack \]

\[\sum_{d=1}^{n}\sum_{i=1}^{\lfloor\frac{n}{d}\rfloor}\sum_{j=1}^{\lfloor\frac{m}{d}\rfloor}\varphi(i)\varphi(j)\lbrack gcd(i,j)=1\rbrack \]

\[\sum_{d=1}^{n}\sum_{p=1}^{\lfloor\frac{n}{d}\rfloor}\mu(p)\sum_{i=1}^{\lfloor\frac{n}{dp}\rfloor}\varphi(ip)\sum_{j=1}^{\lfloor\frac{m}{dp}\rfloor}\varphi(jp) \]

\[\sum_{T=1}^{n}\sum_{d|T}\mu(d)\sum_{i=1}^{\lfloor\frac{n}{T}\rfloor}\varphi(id)\sum_{j=1}^{\lfloor\frac{m}{T}\rfloor}\varphi(jd) \]

一样记 \(G(y,x)=\sum_{i=1}^{x}\varphi(iy)\)

\(S(y,z,x)=\sum_{T=1}^{x}\sum_{d|T}\mu(d)\cdot G(d,y)\cdot G(d,z)\)

那么

\[G(y,x)=G(y,x-1)+\varphi(xy) \]

\[S(y,z,x)=S(y,z,x-1)+\sum_{d|x}\mu(d)\cdot G(y,d)\cdot G(z,d) \]

阈值为 \(B\) ,算下时间应该是 \(O(B^2\space n\ln n+T(\sqrt{n}+\frac{n}{B}\ln\frac{n}{B}))\) .

平衡复杂度不会算就乱取一个。


*P3700 [CQOI2017] 小 Q 的表格

\(n\times n\) 的表格满足:

\[f(a,b)=f(b,a) \]

\[b\times f(a,a+b)=(a+b)\times f(a,b) \]

一开始有 \(f(a,b)=a\times b\),满足表格的条件。

\(m\) 次操作,每次一个格子的数被修改且波及其他格子。然后给出 \(k\),求左上角 \(k\times k\) 的矩阵的数之和。答案对 \(\rm 1e9+7\) 取模。

\(m\le10^4\)\(n\le 4\times10^6\),值域 \(\rm 1e18\).


从表格的对称性入手:

\[\gcd(a,a+b)=\gcd(a+b,a)=\gcd(a,a+b-a)=\gcd(a,b) \]

所以修改 \((a,b)\) 的值会影响到 \(\gcd(x,y)=\gcd(a,b)\)\((x,y)\) 的值。

转换一下第二个式子:

\[\frac{f(a,b)}{a\times b}=\frac{f(a,a+b)}{a\times(a+b)} \]

辗转相除的过程中一直递归下去:

\[\frac{f(a,b)}{a\times b}=\frac{f((a,b),(a,b))}{(a,b)^2} \]

那么

\[d\leftarrow (a,b),f(a,b)=\frac{ab}{d^2}\cdot f(d,d) \]

\(f(d,d)\)\(f(d)\),即求

\[\sum_{i=1}^{n}\sum_{j=1}^{n}\frac{ij}{d^2}\cdot f(d,d) \]

枚举 \(\gcd\)

\[\sum_{d=1}^{n}f(d)\sum_{i=1}^{\lfloor\frac{n}{d}\rfloor}\sum_{j=1}^{\lfloor\frac{n}{d}\rfloor}[i\perp j]ij \]

后面的式子由于有

\[\sum_{i=1}^{n}[i\perp n]i=\frac{n\varphi(n)+\epsilon(n)}{2} \]

思考一下就变成了

\[\sum_{d=1}^{n}f(d)\sum_{i=1}^{\lfloor\frac{n}{d}\rfloor}i^2\varphi(i) \]

\(\displaystyle S(n)=\sum_{i=1}^{n}i^2\varphi(i)\),就可以整除分块了。

然后发现 \(f\) 是动态的而且还要作前缀和。

不考虑数据结构的复杂度是 \(O(m\sqrt{n})\) 的。

\(O(1)\) 查询不难想到分块,把 \(f\) 变为前缀和序列,单点修改改为区间修改,这样总复杂度 \(O(m\sqrt{n})\).

分块被卡成了儿子。。。树状数组跑得十分快。


*P4619 [SDOI2018] 旧试题

多测,求

\[\sum_{i=1}^{A}\sum_{j=1}^{B}\sum_{k=1}^{C}d(ijk)\pmod {10^9+7} \]

\(T\le 10\)\(1\le A,B,C\le 10^5\)\(1\le \sum\max(A,B,C)\le 2\times 10^5\)。时限 5s。


快进到

\[\sum_{d_1=1}^{A}\mu(d_1)\sum_{d_2=1}^{B}\mu(d_2)\sum_{d_3=1}^{C}\mu(d_3)\sum_{x=1}^{\lfloor\frac{A}{\operatorname{lcm}(d_1,d_2)}\rfloor}\big\lfloor\frac{A}{\operatorname{lcm}(d_1,d_2)\cdot x}\big\rfloor\sum_{y=1}^{\lfloor\frac{B}{\operatorname{lcm}(d_2,d_3)}\rfloor}\big\lfloor\frac{B}{\operatorname{lcm}(d_2,d_3)\cdot y}\big\rfloor\sum_{z=1}^{\lfloor\frac{C}{\operatorname{lcm}(d_3,d_1)}\rfloor}\big\lfloor\frac{C}{\operatorname{lcm}(d_3,d_1)\cdot z}\big\rfloor \]

\(V=\max(a,b,c)\),三元组 \((d_1,d_2,d_3)\) 有贡献则:

  • \(\mu(d_1),\mu(d_2),\mu(d_3)\ne 0\)
  • \(\operatorname{lcm}(d_1,d_2),\operatorname{lcm}(d_2,d_3),\operatorname{lcm}(d_3,d_1)\le V\)

\(\mu(x)=0\) 的点删除,将 \(\operatorname{lcm}(x,y)\le V\) 的连边,然后枚举三元环计数。

如何连边:令 \(j=pd,k=qd(p\perp q)\),若 \(pqd\le V\) 则连边。

枚举三元环:枚举度数小的作为入边。是 \(O(m\sqrt{m})\) 的。计数要判断三个点有几个相同。

zky 写的是 \(m\) 最大为 \(821535\)

P6271 [湖北省队互测2014] 一个人的数论

之前贺完写的东西被自己删了。

\[\sum_{i=1}^{n}i^k[i\perp n] \]

其中 \(n=\prod p_i^{\alpha_i}\)

\(p_i,\alpha_i\le 10^9\)\(\omega(n)\le 10^3\)


构造

\[F(n)=\sum_{i=1}^{n}i^k \]

\[G(n)=\sum_{i=1}^{n}i^k[i\perp n] \]

那么 \(G(n)\) 为所求。

由于

\[F(n)=\sum_{d|n}d^kG(\frac{n}{d}) \]

\[G(n)=\sum_{d|n}\mu(d)d^kF(\frac{n}{d}) \]

\(F(n)\) 视作关于 \(n\)\(k+1\) 次多项式:

\[\begin{aligned}G(n) & =\sum_{d|n}\mu(d)d^k\sum_{i=0}^{k+1}f_i\cdot (\frac{n}{d})^i \\ & = \sum_{i=0}^{k+1}f_in^i\sum_{d|n}\mu(d)d^{k-i} \end{aligned} \]

\(\mu(d)\cdot d^{k-i}\) 是积性函数,利用 \(n\) 的分解式:

\[G(n)=\sum_{i=0}^{k+1}f_in^i\prod_{p_j|n}\sum_{t=0}^{a_j}\mu(p_j^t)p_j^t(k-i) \]

故将 \(t\) 枚举至 \(1\) 即可,那么

\[G(n)=\sum_{i=0}^{k+1}f_in^i\prod_{p_j|n}(1-p_j^{k-i}) \]

\(f\) 可以高消 \(O(k^3)\) 或者拉插 \(O(k^2)\)

*P5518 [MtOI2019] 幽灵乐团 / 莫比乌斯反演基础练习题

暂时不考虑补过程。

posted @ 2023-08-06 19:49  SError  阅读(9)  评论(0编辑  收藏  举报