莫比乌斯反演,狄利克雷卷积,杜教筛

Part 1 莫比乌斯反演

首先定义莫比乌斯函数\(\mu(n)\)
\(n=\prod_{i=1}^mp_i^{k_i}\),其中\(p_{1-n}\)为互不相等的质数,则

\[\mu(n)=\begin{cases}0 & \exists k_i>1(i\in[1,m]) \\(-1)^m & else \end{cases} \]

通俗地讲就是:如果\(n\)能被一个质数的平方整除,则\(\mu(n)=0\),否则若\(n\)\(m\)个质因数,则\(\mu(n)=(-1)^m\)

所以\(\mu\)函数可以线筛得到:

mu[1]=1;
for(int i=2;i<=n;++i){
	if(!isnp[i])pri[++cnt]=i,mu[i]=-1;
	for(int j=1;j<=cnt;++j){
		rg int t=pri[j]*i;
		if(t>n)break;
		isnp[t]=1;
		if(i%pri[j]==0)break;
		mu[t]=-mu[i];
	}
}

由定义可以得到几个结论:
\(1.\mu(1)=(-1)^0=1\)
\(2.\mu(p)=-1\)\(p\)为质数)
\(3.\sum_{d|n}\mu(d)=[n=1]\)。其中\([]\)是条件运算符,当里面的条件成立时值为\(1\),否则为\(0\)
下面来证明第三个结论。
首先,若\(n=1\),结论显然成立。
否则,我们同样把\(n\)写成\(\prod_{i=1}^mp_i^{k_i}\)的形式,那么结论的式子可以展开为

\[\sum_{d_1=0}^{k_1}\sum_{d_2=0}^{k_2}···\sum_{d_m=0}^{k_m} \mu(\prod_{i=1}^mp_i^{d_i}) \]

可以发现当存在一个\(d_i>1\)时,后面的\(\mu\)的值为0。所以我们只需要考虑\(d_i\)\(0\)\(1\)的情况。这时可以把我们式子看成:在一个大小为\(m\)的集合中选任意个数,这些数的乘积的\(\mu\)值之和。又由于这些数都是互不相等的质数,所以乘积的\(\mu\)值只与选了多少数有关。那么枚举选了多少个数,式子就可以写成:

\[\sum_{i=0}^m{m\choose i}(-1)^i \\=\sum_{i=0}^m{m\choose i}(-1)^i\times1^{m-i} \\=0^m \]

所以只有当\(m=0\),即\(n=1\)时,\(\sum_{d|n}\mu(d)=1\),其余都为0。

接下来就是莫比乌斯函数的一种应用,被称为莫比乌斯反演。
通常有两种式子:

\[若F(n)=\sum_{d|n}f(d) \\则f(n)=\sum_{d|n}\mu(\dfrac{n}{d})F(d) \]

证明很简单,把\(F\)展开即可:

\[f(n)=\sum_{d|n}\mu(\dfrac{n}{d})\sum_{r|d}f(r) \\=\sum_{r|n}f(r)\sum_{d|\frac{n}{r}}\mu(\dfrac{n}{dr}) \\=\sum_{r|n}f(r)\sum_{d|\frac{n}{r}}\mu(d) \]

根据上面的性质可以知道,只有当\(r=n\)时,第二个\(\sum\)才有值,为1,此时等号右边等于\(f(n)\)
第二种式子为:

\[若F(n)=\sum_{n|d}f(d) \\则f(n)=\sum_{n|d}\mu(\dfrac{d}{n})F(d) \]

证明和上面类似:

\[f(n)=\sum_{n|d}\mu(\dfrac{d}{n})\sum_{d|r}f(r) \\=\sum_{n|r}f(r)\sum_{d|\frac{r}{n}}\mu(d) \]

同理,只有当\(r=n\)时,第二个\(\sum\)有值,为1。
下面总结的狄利克雷卷积有更好的方式证明第一种式子。

Part 2 狄利克雷卷积

首先总结一下积性函数和几个常见的积性函数。
积性函数的定义为:若\(n,m\)互质,且\(f(n)\times f(m)=f(nm)\),则\(f\)为积性函数。
另外有个完全积性函数的定义:若\(f(n)\times f(m)=f(nm)\),则\(f\)为完全积性函数。
下面总结一下常见的积性函数:
\(1.e(n)=[n=1]\)元函数。
\(2.I(n)=1\)常值函数。
\(3.id(n)=n\)不知道叫什么函数。
\(4.p_k(n)=n^k\)幂函数
\(4.\mu(n)\)莫比乌斯函数,定义在上面。
\(5.\varphi(n)=\sum_{i=1}^n[gcd(i,n)=1]\),即欧拉函数,意义是\(n\)以内与\(n\)互质的数的个数。
\(6.d(n)=\sum_{d|n}1\)约数个数函数,值为\(n\)的约数个数。
可以注意到前四个实际上还是完全积性函数。
积性函数可以通过欧拉筛(线筛)来求。

狄利克雷卷积是一种运算,符号为\(*\),定义两个函数的狄利克雷卷积\((f*g)(n)=\sum_{d|n}f(d)g(\dfrac{n}{d})\)
狄利克雷卷积有几个常用的式子:
对于任意函数\(f\),都有\((f*e)(n)=f(n)\)。证明就是把式子展开。
\((\mu*I)(n)=e\)。展开之后就是莫比乌斯函数的结论。
\((id*id)(n)=n\times d(n)\)还是展开再证明
\((\varphi*I)(n)=id(n)\)
最后一个式子可以展开为\(\sum_{d|n}\varphi(d)=n\)
这个式子有一个巧妙的证明和一个中规中矩的证明。

巧妙的证明:
尝试列出\(\dfrac{1}{n},\dfrac{2}{n},···,\dfrac{n}{n}\),并把他们化为最简分数。设化简后的分母集合为\(S\)
引理\(1\)\(S\)恰好为\(n\)的约数集。
证明:若存在一个\(n\)的约数\(d\)不在\(S\)中,则\(\dfrac{n/d}{n}\)不在最初的数列中。不成立。
\(x\)不是\(n\)的约数。由于最初的数列中没有一个数能化简得到分母为\(x\)的分数,所以\(x\)不可能在\(S\)中。得证。
引理\(2\):对于\(S\)中的任意元素\(x\),化简后的数列中所有以\(x\)为分母的分数的分子都与\(x\)互质,且分子集合恰好是所有\(x\)以内与\(x\)互质的数。
证明:分子分母显然,因为是最简分数。若存在一个数\(y\leq x\)且与\(x\)互质,且不在分子集中出现过,则分数\(\dfrac{y\times\frac{n}{x}}{n}\)不在最初的数列中出现,不成立。得证。
因此,化简后以约数\(d\)为分母的分数一共有\(\varphi(d)\)个。而分数一共有\(n\)个,因此\(\sum_{d|n}\varphi(d)=n\)

中规中矩的证明:
引理:\(f(n)=\sum_{d|n}\varphi(d)\)为积性函数。
证明:

\[f(n)\times f(m)=(\sum_{d|n}\varphi(d))(\sum_{r|m}\varphi(r)) \\=\sum_{d|n}\varphi(d)\sum_{r|m}\varphi(r) \\=\sum_{d|n}\sum_{r|m}\varphi(d)\varphi(r) \\=\sum_{dr|nm}\varphi(dr) \\=f(nm) \]

这里涉及到\(\varphi\)为积性函数。不懂就搜。

\[f(n)=\prod_{i=1}^mf(p_i^{k_i}) \\=\prod_{i=1}^m(1+\sum_{j=1}^{k_i}(p_i^j-p_i^{j-1})) \\=\prod_{i=1}^mp_i^{k_i}=n \]

狄利克雷卷积也有运算律:
·交换律:\(f*g=g*f\)。根据狄利克雷卷积定义式可知其显然成立。
·结合律:\((f*g)*h=f*(g*h)\)
证明:

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

·分配律:\((f+g)*h=f*h+g*h\)。把左边展开即得证。

上面说狄利克雷卷积可以证明莫比乌斯反演的第一个式子,现在填坑:
\(F(n)=\sum_{d|n}f(d)\),则\(f(n)=\sum_{d|n}\mu(d)F(\dfrac{n}{d})\)
证明:\(F(n)=\sum_{d|n}f(d)\)可以写成:\(F=f*I\)
两边同时卷一个\(\mu\)可以得到\(F*\mu=f*I*\mu=f*(I*\mu)=f*e=f(n)\)。即得证。

同时还有一个常用的式子:\(\sum_{d|n}d\times\mu(\dfrac{n}{d})=\varphi(n)\)
证明:把左边写成\(id*\mu\)。由于\(id=\varphi*I\),所以\(id*\mu=\varphi*I*\mu=\varphi*e=\varphi(n)\)

Part 3 杜教筛

可以在\(O(n^{\frac{2}{3}})\)的复杂度内求出\(\sum_{i=1}^nf(i)\)
设要求的为\(S(n)\),并设\(h=f*g\)\(g\)是我们选的一个与\(f\)有联系的函数,最后会讲怎么选。则

\[\sum_{i=1}^nh(i)=\sum_{i=1}^n\sum_{d|i}g(d)f(\frac{i}{d}) \\=\sum_{d=1}^ng(d)\sum_{i=1}^{\lfloor\frac{n}{d}\rfloor}f(i) \\=\sum_{d=1}^ng(d)S(\lfloor\frac{n}{d}\rfloor) \]

然后把\(d=1\)的一项留着,其余的减过去,得到

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

这个就可以整除分块然后递归了。这就是杜教筛的套路式。
观察这个式子,可以发现杜教筛的使用条件:
\(h\)\(g\)的前缀和必须很好求。比如\(f(i)=i\)这样的函数。

有几种常见的杜教筛:
\(1.\sum_{i=1}^n\mu(i)\)。由于\(\mu*I=e\),而\(\sum_{i=1}^ne(i)=1\),所以代进杜教筛的式子:

\[I(1)S(n)=\sum_{i=1}^ne(i)-\sum_{i=2}^nI(i)S(\lfloor\frac{n}{i}\rfloor) \\S(n)=1-\sum_{i=2}^nS(\lfloor\frac{n}{i}\rfloor) \]

\(2.\sum_{i=1}^n\varphi(i)\)。由于\(\varphi*I=id\)\(\sum_{i=1}^nid(i)=\frac{n(n+1)}{2}\),所以

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

\(3.\sum_{i=1}^ni\varphi(i)\)。把这个函数卷一个\(id\)正好可以消掉\(i\)

\[\sum_{d|n}d\varphi(d)\times \frac{n}{d}=n\sum_{d|n}\varphi(d)=n^2 \]

\(\sum_{i=1}^ni^2=\frac{n(n-1)(n-2)}{3}+\frac{n(n-1)}{2}\),也可以杜教筛。

Part 4 例题

P4450 双亲数:\(\sum_{i=1}^n\sum_{i=1}^m[(i,j)=d]\)\(n,m\leq10^6,d\leq \min(n,m)\)
假设\(n\leq m\)。把\(i,j\)都除以\(d\)

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

后面就是莫比乌斯函数的形式:

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

发现\(r\)的值域是\([1,\lfloor\frac{n}{d}\rfloor]\),每个\(r\)对应的\(i,j\)都是\(r\)的倍数,所以

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

可以\(O(n)\)算了。

P3768 简单的数学题:\(\sum_{i=1}^n\sum_{j=1}^nij(i,j)\pmod p\)\(n\leq10^{10},p\)为质数。
枚举\(gcd\)

\[\sum_{d=1}^n\sum_{i=1}^n\sum_{j=1}^nijd[(i,j)=d] \\=\sum_{d=1}^nd\sum_{i=1}^n\sum_{j=1}^nij[(i,j)=d] \\=\sum_{d=1}^nd^3\sum_{i=1}^{\lfloor\frac{n}{d}\rfloor} \sum_{j=1}^{\lfloor\frac{n}{d}\rfloor}ij[(i,j)=1] \\=\sum_{d=1}^nd^3\sum_{i=1}^{\lfloor\frac{n}{d}\rfloor} \sum_{j=1}^{\lfloor\frac{n}{d}\rfloor}ij \sum_{r|(i,j)}\mu(r) \\=\sum_{d=1}^nd^3\sum_{r=1}^{\lfloor\frac{n}{d}\rfloor}\mu(r)r^2 \sum_{i=1}^{\lfloor\frac{n}{dr}\rfloor} \sum_{j=1}^{\lfloor\frac{n}{dr}\rfloor}ij \\=\sum_{d=1}^nd^3\sum_{r=1}^{\lfloor\frac{n}{d}\rfloor}\mu(r)r^2 \sum_{i=1}^{\lfloor\frac{n}{dr}\rfloor}i \sum_{j=1}^{\lfloor\frac{n}{dr}\rfloor}j \]

\(F(n)=\sum_{i=1}^ni=\frac{n(n+1)}{2}\)

\[\\=\sum_{d=1}^nd^3\sum_{r=1}^{\lfloor\frac{n}{d}\rfloor}\mu(r)r^2 F^2(\lfloor\frac{n}{dr}\rfloor) \]

枚举\(t=dr\)

\[=\sum_{t=1}^{n}t^2F^2(\lfloor\frac{n}{t}\rfloor) \sum_{d|t}d\mu(\frac{t}{d}) \]

后面这个\(\sum_{d|t}d\mu(\frac{t}{d})\)就是\(id*\mu\),把\(id\)拆开:

\[id*\mu=(\varphi*I)*\mu=\varphi*(I*\mu)=\varphi*e=\varphi \]

所以可以进一步写成:

\[\sum_{t=1}^{n}F^2(\lfloor\frac{n}{t}\rfloor)t^2\varphi(t) \]

前面的\(F\)是个整除分块,设\(f(n)=n^2\varphi(t),g(n)=n^2\),发现

\[(f*g)(n)=\sum_{d|n}d^2\varphi(d)\times (\frac{n}{d})^2 \\=n^2\sum_{d|n}\varphi(d)=n^3 \]

\[\sum_{i=1}^ni^3=\frac{n(n-1)(n-2)(n-3)}{4}+n(n-1)(n-2)+\frac{n(n-1)}{2} \\=F^2(n) \]

那么设\(S(n)=\sum_{i=1}^nf(i)\)代入杜教筛式子:

\[S(n)=F^2(n)-\sum_{i=2}^ni^2S(\frac{n}{d}) \]

不会证复杂度,但外面一个整除分块里面一个杜教筛,应该是\(n^{\frac{2}{3}}\)级别的吧

P3911 最小公倍数之和:给定数组A,求\(\sum_{i=1}^n\sum_{j=1}^nlcm(A_i,A_j)\)\(n,A_i\leq50000\)
转换一下思维,假设\(A_i\)出现\(x\)次,\(A_j\)出现\(y\)次,那么\(lcm(A_i,A_j)\)会被算\(xy\)次。注意到\(A_i\)的范围很小,所以记\(cnt_i\)表示\(i\)\(A\)数组中出现的次数。
重新定义\(n=max{\{}A_i{\}}\),那么答案可以写成:

\[\sum_{i=1}^n\sum_{j=1}^nlcm(i,j)cnt_icnt_j \\=\sum_{i=1}^n\sum_{j=1}^n\frac{cnt_icnt_jij}{(i,j)} \\=\sum_{d=1}^nd \sum_{i=1}^{\lfloor\frac{n}{d}\rfloor} \sum_{j=1}^{\lfloor\frac{n}{d}\rfloor}cnt_{id}cnt_{jd}ij[(i,j)=1] \\=\sum_{d=1}^nd \sum_{i=1}^{\lfloor\frac{n}{d}\rfloor} \sum_{j=1}^{\lfloor\frac{n}{d}\rfloor}cnt_{id}cnt_{jd}ij \sum_{r|(i,j)}\mu(r) \\=\sum_{d=1}^nd\sum_{r=1}^{\lfloor\frac{n}{d}\rfloor}r^2\mu(r) \sum_{i=1}^{\lfloor\frac{n}{dr}\rfloor} \sum_{j=1}^{\lfloor\frac{n}{dr}\rfloor}cnt_{idr}cnt_{jdr}ij \\=\sum_{d=1}^nd\sum_{r=1}^{\lfloor\frac{n}{d}\rfloor}r^2\mu(r) \sum_{i=1}^{\lfloor\frac{n}{dr}\rfloor}cnt_{idr}i \sum_{j=1}^{\lfloor\frac{n}{dr}\rfloor}cnt_{jdr}j \]

\(f(n)=\sum_{i=1}^ncnt_{in}i\)\(t=dr\),枚举\(t\)

\[\\=\sum_{t=1}^ntf^2(\frac{n}{t})\sum_{d|n}d\mu(d) \]

\(g(n)=\sum_{d|n}d\mu(d)\)

\[\\=\sum_{t=1}^ntf^2(\frac{n}{t})g(t) \]

发现计算\(f\)\(g\)的总复杂度等于\(\sum_{i=1}^n\frac{n}{i}=n\ln n\),所以最后的式子直接暴力算,复杂度为\(O(n\ln n)\)

P2257 YY的GCD:设质数集合为\(P\),求\(\sum_{i=1}^n\sum_{j=1}^m[(i,j)\in P]\),有\(T\)组数据,\(T\leq 10^4,n、m\leq10^7\)

假设\(n\leq m\)。同样是枚举\(gcd\)

\[\sum_{d=1,d\in P}\sum_{i=1}^n\sum_{j=1}^m[(i,j)=d] \\=\sum_{d=1,d\in P}\sum_{i=1}^{\lfloor\frac{n}{d}\rfloor} \sum_{j=1}^{\lfloor\frac{m}{d}\rfloor}[(i,j)=1] \\=\sum_{d=1,d\in P}\sum_{i=1}^{\lfloor\frac{n}{d}\rfloor} \sum_{j=1}^{\lfloor\frac{m}{d}\rfloor}\sum_{r|(i,j)}\mu(r) \\=\sum_{d=1,d\in P}\sum_{r=1}^{\lfloor\frac{n}{d}\rfloor}\mu(r) \sum_{i=1}^{\lfloor\frac{n}{dr}\rfloor} \sum_{j=1}^{\lfloor\frac{m}{dr}\rfloor}1 \\=\sum_{d=1,d\in P}\sum_{r=1}^{\lfloor\frac{n}{d}\rfloor}\mu(r) \lfloor\frac{n}{dr}\rfloor\lfloor\frac{m}{dr}\rfloor \]

枚举\(t=dr\)

\[\\=\sum_{t=1}^n\lfloor\frac{n}{t}\rfloor\lfloor\frac{m}{t}\rfloor \sum_{d|t,d\in P}\mu(\frac{t}{d}) \]

最后一个可以直接枚举\(d\),然后枚举\(d\)的倍数预处理出来。由于质数个数大概是\(\frac{n}{\log n}\),所以复杂度是\(O(\frac{n}{\log n}\ln \frac{n}{\log n})=O(n)\)
前面的就整除分块,每个询问就可以\(O(\sqrt{n})\)了。

posted @ 2020-07-11 00:30  修电缆的建筑工  阅读(239)  评论(0编辑  收藏  举报