Mobius 反演

Mobius 反演

前置知识:线性筛

1

解决的问题

将「gcd 恰好为 XX」转化为「gcd 为 XX 的倍数」,结合整除分块做到 \(O(\sqrt{n})\)

我们一般定义:

  • \(f(n)\) 表示恰好满足条件的方案数

  • \(F(n)\) 表示 \(n\) 的倍数时满足条件的方案数

显然有 \(F(n)=\sum_{n|d} f(d)\),莫比乌斯反演就是解决已知 \(F(n)\),求解 \(f(n)\) 的工具。

定义

\(\mu(n)\) 是一个数论函数(定义域为 \(N^+\)),其定义如下:

\[\mu(n) = \begin{cases} 1, & n = 1 \\ 0, & \exist i \in [1,k] , p_i^2 | n \\ (-1)^k, & n = p_1 \times p_2 \times ... \times p_k \end{cases} \]

\(k\)\(n\) 质因子个数,第三个情形中 \(p_{1 \sim k}\) 互不相同)

实际意义

根据容斥原理:

\[\varphi(n) = n - \sum \frac{n}{p_1} + \sum \frac{n}{p_1p_2} - ... + \sum (-1)^k \frac{n}{p_1 p_2 ... p_k} \]

经过观察,我们发现第 \(i\) 项的系数即为 \(\mu(i)\)

性质

  • \(\mu(n)\) 为积性函数,即若 \(\gcd(a,b)=1\),则\(\mu(ab) = \mu(a) \mu(b)\)

证明显然。这样,我们便可以使用线性筛 \(O(n)\) 求取 \(\mu(i)\) 了。

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

证明:

首先,当 \(d\) 中具有多重因子时 \(\mu(d)=0\),故我们只考虑质因子互不相同的情形。

然后考虑计算质因子的贡献(设 \(d\)\(k\) 个互不相同的质因子):

  1. \(0\) 个质因子,贡献为 \({k \choose 0}\)

  2. \(1\) 个质因子,每个 \(\mu\)\(1\),贡献为 \({k \choose 1}\)

  3. \(2\) 个质因子,每个 \(\mu\)\(-1\),贡献为 \(-{k \choose 2}\)

    ...

这样,我们可得总贡献为

\[\sum_{d | n} \mu(d) = \sum_{i=0}^{k} (-1)^i {k \choose i} \]

利用二项式定理,可知 RHS \(= 0^k\),当且仅当 \(n=1\)\(k=0\))时取得 \(1\),其余为 \(0\)。Q.E.D.

  • \(\bold{\sum_{d | \gcd(i,j)} \mu(d) = [\gcd(i,j) = 1]}\)

上个性质的推论。极为重要

Mobius 反演

形式一:约数和型(狄利克雷卷积)

\[F(n) = \sum_{d|n} f(d)\\ \Downarrow\\ f(n) = \sum_{d|n} \mu(d) \cdot F(\frac{n}{d}) \]

形式二:倍数和型(最常用)

\[F(n) = \sum_{n|d} f(d)\\ \Downarrow\\ f(n) = \sum_{n|d} \mu(\frac{d}{n}) \cdot F(d) \]

形式二证明:

主要思想是枚举倍数转为枚举几倍。

\[\sum_{n|d} \mu(\frac{d}{n}) \cdot F(d)\\ = \sum_{k=1}^{\infty} \mu(k) \cdot F(nk)\\ = \sum_{k=1}^{\infty} \mu(k) \sum_{nk|d} f(d)\\ = \sum_{n|d} f(d) \cdot \sum_{k | \frac{d}{n}} \mu(k) \]

其中内层和当且仅当 \(n=1\) 时为 \(1\),其余为 \(0\),故原式 \(=f(n)\)。Q.E.D.

\(\mu(n)\) 的线性筛法

分三种情形:

  • \(i=1, \mu(i)=1\)

  • \(\gcd(i,p)=1, \mu(i \cdot p)=\mu(i) \cdot \mu(p)\)

  • \(\text{otherwise}, \mu(i)=0\)

\(\varphi(n)\)\(\mu(n)\) 的转化

有如下结论:

\[\sum_{d|T} d \cdot \mu(\frac{T}{d}) = \varphi(T) \]

证明待补。

\(d(n)\) 的有关结论

备注:\(d(n)\) 表示 \(n\) 的约数个数。

\[d(ij) = \sum_{x|i} \sum_{y|j} [\gcd(x,y) = 1] \]

证明:考虑每个质因子 \(p\) 的贡献。

对于 LHS,不妨设 \(i\) 中有 \(a\)\(p\)\(j\) 中有 \(b\)\(p\),则它在 \(ij\) 中的贡献即为 \(a+b+1\)(指数可以为 \(0\))。

对于 RHS,因为 \(\gcd(x,y)=1\),故 \(x,y\) 不能同时取到质因子 \(p\),讨论两种情形:

  • \(x\) 不含 \(p\)\(y\)\(p^c\)\(c \in [0,b]\)

  • \(y\) 不含 \(p\)\(x\)\(p^c\)\(c \in [0,a]\)

这两种情形之和正好是 \(a+b+1\) 种约数的选择,与 LHS 一一对应。Q.E.D.

例题选讲

第 I 类:直接使用性质三

  • P2398 GCD SUM(枚举思想 & \(\gcd\) 化为 \(1\)

\[\sum_{i=1}^n \sum_{j=1}^n \gcd(i, j)\\ = \sum_{d=1}^n d \sum_{i=1}^n \sum_{j=1}^n [\gcd(i, j)=d]\\ = \sum_{d=1}^n d \sum_{i=1}^{\lfloor \frac{n}{d} \rfloor} \sum_{j=1}^{\lfloor \frac{n}{d} \rfloor} [\gcd(i, j)=1]\\ =\sum_{d=1}^n d \sum_{i=1}^{\lfloor \frac{n}{d} \rfloor} \sum_{j=1}^{\lfloor \frac{n}{d} \rfloor} \sum_{k | \gcd(i,j)} \mu(k)\\ = \sum_{d=1}^n d \sum_{k=1}^{\lfloor \frac{n}{d} \rfloor} (\lfloor \frac{n}{dk} \rfloor)^2 \mu(k) \]

  • P1390 公约数的和(容斥思想

上题的答案减去 \(\sum_{i=1}^n i\)(去除 \(i=j\) 的情形)再除以 \(2\)(去除 \(i<j\) 的情形)即得。

  • P3455 [POI 2007] ZAP-Queries(整除分块 & 前缀和优化 & 换元思想

\[\sum_{i=1}^a \sum_{j=1}^b [\gcd(i, j)=d]\\ = \sum_{i=1}^{\lfloor \frac{a}{d} \rfloor} \sum_{j=1}^{\lfloor \frac{b}{d} \rfloor} [\gcd(i, j)=1]\\ = \sum_{i=1}^{\lfloor \frac{a}{d} \rfloor} \sum_{j=1}^{\lfloor \frac{b}{d} \rfloor} \sum_{k | \gcd(i,j)} \mu(k)\\ = \sum_{k=1}^{\min(\lfloor \frac{a}{d} \rfloor,\lfloor \frac{b}{d} \rfloor)} \lfloor \frac{a}{dk} \rfloor \lfloor \frac{b}{dk} \rfloor \mu(k) \]

后面 \(\mu(k)\) 可以前缀和预处理,前面的两个分式即可整除分块(令 \(t = dk\)

\[\sum_{k=1}^{\min(\lfloor \frac{a}{d} \rfloor,\lfloor \frac{b}{d} \rfloor)} \lfloor \frac{a}{dk} \rfloor \lfloor \frac{b}{dk} \rfloor \\ = \sum_{t=1}^{\min(a,b)} \lfloor \frac{a}{t} \rfloor \lfloor \frac{b}{t} \rfloor \]

即可。


第 II 类:\(\mu(n)\) 转化为 \(\varphi(n)\) / 莫反

  • P5221 Product(仪仗队套路 & 贡献思想

先把 \(\operatorname{lcm}(i,j)\) 去掉。

\[\prod_{i=1}^N \prod_{j=1}^N \frac{\operatorname{lcm}(i,j)}{\gcd(i,j)} \\ = \prod_{i=1}^N \prod_{j=1}^N \frac{i \cdot j}{gcd(i,j)^2} \]

考虑分子。

\[\prod_{i=1}^N \prod_{j=1}^N {i \cdot j} \\ = \prod_{i=1}^N i^N \cdot \prod_{j=1}^N j^N \\ = (N!)^N \cdot (N!)^N \\ = (N!)^{2N} \]

考虑分母。

\[\prod_{i=1}^N \prod_{j=1}^N {gcd(i,j)^2} \\ = \prod_{d=1}^N d^2 \prod_{i=1}^N \prod_{j=1}^N [gcd(i,j) = d] \\ = \prod_{d=1} d^{\sum_{i=1}^N \sum_{j=1}^N [gcd(i,j) = d]} \\ \]

考虑指数。

\[\sum_{i=1}^N \sum_{j=1}^N [gcd(i,j) = d] \\ = \sum_{i=1}^{\lfloor \frac{N}{d} \rfloor} \sum_{j=1}^{\lfloor \frac{N}{d} \rfloor} [gcd(i,j) = 1] \\ = 2 \cdot \sum_{i=1}^{\lfloor \frac{N}{d} \rfloor} \varphi(i) - 1 \]

于是,分子可以 \(O(1)\) 计算,分母的 \(\sum \varphi(i)\) 可以 \(O(n)\) 线性筛+前缀和预处理,本题得到解决。

注意指数过大,需要用欧拉定理降幂。

  • P1447 [NOI2010] 能量采集(\(\varphi(n)\)\(\mu(n)\) 转化的应用

首先抽象模型。对于 \((x,y)\)\(x<y\)),它的贡献为 \(\gcd(x,y)+1-2 = \gcd(x,y)-1\)

因此答案即为 \(2 \cdot \sum_{i=1}^n \sum_{j=1}^m \gcd(i,j) - n \cdot m\)(每个点额外贡献是 \(-1\),加起来就是 \(- n \cdot m\))。

考虑前面部分:

\[\sum_{i=1}^n \sum_{j=1}^m \gcd(i,j) \\ = \sum_{d=1}^{\min(n,m)} d \cdot \sum_{i=1}^n \sum_{j=1}^m [\gcd(i,j) = d] \\ = \sum_{d=1}^{\min(n,m)} d \cdot \sum_{i=1}^{\lfloor \frac{n}{d} \rfloor} \sum_{j=1}^{\lfloor \frac{m}{d} \rfloor} \sum_{k|\gcd(i,j)} \mu(k) \\ = \sum_{d=1}^{\min(\lfloor \frac{n}{d} \rfloor,\lfloor \frac{m}{d} \rfloor)} d \cdot \sum_{k|d} \mu(k) \cdot \lfloor \frac{n}{kd} \rfloor \cdot \lfloor \frac{m}{kd} \rfloor \\ = \sum_{T=1}^{\min(n,m)} \cdot \lfloor \frac{n}{T} \rfloor \cdot \lfloor \frac{m}{T} \rfloor \sum_{d|T} \mu(\frac{T}{d}) \cdot d \\ = \sum_{T=1}^{\min(n,m)} \lfloor \frac{n}{T} \rfloor \cdot \lfloor \frac{m}{T} \rfloor \cdot \varphi(T) \]

整除分块加预处理 \(\sum \varphi(i)\) 即可做到 \(O(n+\sqrt{n})\)

  • P3327 [SDOI2015] 约数个数和(莫反 & \(d(i)\) 结论的运用

\[\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] \\ \]

开始莫反。

\[f(k) = \sum_{i=1}^N \sum_{j=1}^M \sum_{x|i} \sum_{y|j} [\gcd(x,y) = k] \]

答案即为 \(f(1)\)。考虑构造倍数形式的莫反:

\[F(k) = \sum_{k|d} f(d) \]

易知

\[F(k) = \sum_{i=1}^N \sum_{j=1}^M \sum_{x|i} \sum_{y|j} [k|i 且 k|j] \\ F(k) = \sum_{i=1}^{\lfloor \frac{N}{k} \rfloor} \sum_{j=1}^{\lfloor \frac{M}{k} \rfloor} \lfloor \frac{N}{ik} \rfloor \lfloor \frac{M}{jk} \rfloor \]

有逆变换:

\[f(n) = \sum_{n|d} \mu(\frac{d}{n}) \cdot F(d) \]

代入 \(n=1\)

\[f(1) = \sum_{k=1}^{\min(N,M)} \mu(d) \cdot F(d) \\ = \sum_{d=1}^{\min(N,M)} \mu(d) \cdot \sum_{i=1}^{\lfloor \frac{N}{d} \rfloor} \sum_{j=1}^{\lfloor \frac{M}{d} \rfloor} \lfloor \frac{N}{id} \rfloor \lfloor \frac{M}{jd} \rfloor \\ = \sum_{d=1}^{\min(N,M)} \mu(d) \cdot \sum_{i=1}^{\lfloor \frac{N}{d} \rfloor} \lfloor \frac{M}{jd} \rfloor \cdot \sum_{j=1}^{\lfloor \frac{M}{d} \rfloor} \lfloor \frac{N}{id} \rfloor \]

第一部分前缀和预处理,后两部分整除分块即可。

posted @ 2026-08-01 23:01  _KidA  阅读(16)  评论(0)    收藏  举报