莫比乌斯反演学习笔记

1.数论函数

对于定义域 \(D\in N_{*}\) 的函数 \(f(x)\) ,称其为数论函数。

2.dirichlet卷积

对于两个数论函数 \(f(x)\)\(g(x)\) ,定义他们的dirichlet卷积得到的结果 \(h(x)\) :

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

可简记为:

\[h=f*g \]

显然的,dirichlet卷积具有交换率、结合律和分配律。

\((\sum\limits_{d|n}φ(d)=n\Rightarrow φ*1=id)\)

3.莫比乌斯函数

我们定义莫比乌斯函数 \(\mu(x)\):

\[\mu(x)=\begin{cases}1 &x=1\\ 0&x含平方因子\\(-1)^k&k=x的本质不同质因子数\end{cases} \]

那么看到如下定义,我们可以得到如下式子:

\((1)\)

\[\sum_{d|n}\mu(d)\times\frac{n}{d}=\sum_{i=1}^n [\gcd(i,n)=1]=φ(n) \]

从容斥的角度证明。

\(d=i\) 时将贡献看做加上或减去 \([1,n]\)\(i\) 的倍数。\(\mu(d)\) 为容斥系数。

则满足 \(\gcd(i,n)=1\)\(i\) ,会被 \(d=1\) 贡献,其余被容斥掉。证毕。

我们称 \(id(x)=x\) ,则可写成如下形式:

\[\mu*id=φ \]

\((2)\)
定义 \(\varepsilon(x)=[x=1]\) ,我们有:

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

证明考虑算术基本定理,对 \(n>1\) 的数进行质因数分解。( \(n=1\) 答案显然为 \(1\) 。)

注意到质因子 \(p_i\) 的次数并不会对答案产生影响 \((\mu(d)=0)\) ,因此只需考虑质因子的数量 \(k\) 即可。

考虑选 \(i\) 个质因子的贡献:\(\dbinom{k}{i}*\mu(x)=\dbinom{k}{i}\times(-1)^{i+1}\)

所以得到:

\[ans=\sum\limits_{i=0}^{k}\dbinom{k}{i}\times(-1)^{i+1} \]

提出一个 \(-1\) ,显然有二项式定理:

\[\begin{aligned}ans&=-\sum\limits_{i=0}^{k}\dbinom{k}{i}\times(-1)^i\\&=-\sum\limits_{i=0}^{k}\dbinom{k}{i}\times(-1)^i\times 1^{k-i}\\&=-(-1+1)^k\\&=0\end{aligned} \]

证毕。

那么同样有:

\[\mu*1=\varepsilon \]

此为莫比乌斯反演用到最多的性质。

4.莫比乌斯反演

例题:

\[\begin{aligned}&\sum_{i=1}^n\sum_{j=1}^m [\gcd(i,j)=1]\\=&\sum_{i=1}^n\sum_{j=1}^m\varepsilon(\gcd(i,j))\\=&\sum_{i=1}^n\sum_{j=1}^m\sum_{k|\gcd(i,j)}\mu(k)\end{aligned} \]

考虑改变枚举顺序,有:

\[\begin{aligned}=&\sum_{k=1}^{\min(n,m)}\mu(k)\sum_{i=1}^{\left\lfloor\frac{n}{k}\right\rfloor}\sum_{j=1}^{\left\lfloor\frac{m}{k}\right\rfloor}1\\=&\sum_{k=1}^{\min(n,m)}\mu(k)\times\left\lfloor\frac{n}{k}\right\rfloor\times\left\lfloor\frac{m}{k}\right\rfloor\end{aligned} \]

数论分块即可。

5.杜教筛

杜教筛可以在小于线性时间内求出一个积性函数的前缀和。

假设我们要求出函数 \(f\) 的点缀和。记 \(s(n)=\sum\limits_{i=1}^n f(i)\)

我们考虑设 \(g\) 为另一个积性函数,并认为我们可以方便地求出 \(g\)\(f*g\) 的前缀和。

\(f*g\) 进行推导:

\[\begin{aligned}&\sum\limits_{i=1}^n(f*g)(i)\\=&\sum\limits_{i=1}^n\sum\limits_{d|i}g(d)\times f(\frac{n}{d})\\=&\sum\limits_{d=1}^n g(d)\sum\limits_{i=1}^{\left\lfloor\frac{n}{d}\right\rfloor}f(i)\\=&\sum\limits_{d=1}^n g(d)s(\left\lfloor\dfrac{n}{d}\right\rfloor)\end{aligned} \]

那么这有什么用呢?

注意到 \(g(1)s(n)=\sum\limits_{i=1}^n(f*g)(i)\ -\sum\limits_{d=2}^n g(d)s(\left\lfloor\dfrac{n}{d}\right\rfloor)\)

那么 \(O(\sqrt n)\) 数论分块一下就做完了。

总复杂度 \(O(n^{\tfrac{3}{4}})\)我不会证

现在的问题是找到合适的 \(g\) ,使得 \(g\)\(f*g\) 前缀和是好求的。

举一些例子:

\((1)\)\(\mu\) 的前缀和。

注意到 \(\mu*1=\varepsilon\) 。然后...就没有然后了?

\((2)\)\(φ\) 的前缀和。

注意到 \(φ*1=id\) 。然后...也没有然后了?

\((3)\)\(φ*id\) 的前缀和。

套路:对于 \(f\) 中的 \(id\) ,把他塞回 \(g\) 里。

则有 \((f*g)(n)=\sum\limits_{d|n} f(i)g(\dfrac{n}{i}) =\sum\limits_{d|n} φ(i)\times i\times \dfrac{n}{i} =n\times\sum\limits_{d|n} φ(i) = n^2\)

完结!

posted @ 2024-06-19 17:25  xiang_xiang  阅读(37)  评论(1)    收藏  举报