莫某某的反演


莫某某的反演似乎有很多形式, 但不用太在意, 多关注常用的就行了。
莫某某的反演可以直接用容斥证明, 但有一种 “证明方法” 更易令人信服(并记住), 下面会介绍这种 “证明方法”。

数论函数及其加减数乘运算

即定义域为正整数的函数。
简单的例子:
\(\epsilon(n) = [n=1]\)
\(\text{1}(n) = 1\)
\(\text{id}_k(n) = n^k\)
\(\sigma_k(n) = \sum_{d|n} d^k\)

加减法
\((\text{f} \pm\text{g})(n) = \text{f}(n) \pm \text{g}(n)\)
数乘
\(k\) 为整数, \((x\text{f})(n) = x · \text{f}(n)\)

数论函数的狄利克雷卷积运算及其性质

定义两个数论函数的 狄利克雷卷积 运算(二元算符 \(*\))如下:
\(\text{h} = \text{f} * \text{g}\), 则:

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

数论函数的狄利克雷卷积运算满足 交换律、结合律和对加法的分配律, 可以自己验证一下。
(用狄利克雷卷积的另一种写法 \((\text{f}*\text{g})(n) = \sum_{ij=n} \text{f}(i)\text{g}(j)\) 会更容易验证)

幺元(单位元)
狄利克雷卷积的幺元为 \(\epsilon(n) = [n=1]\), 即对任意数论函数 \(\text{t}\)\(\text{t} * \epsilon = \text{t}\)

逆元
对于每个 \(\text{f}(1) \neq 0\) 的数论函数 \(\text{f}\), 都存在一个函数 \(\text{g}\) 使得 \(\text{f} * \text{g} = \epsilon\)

数论函数求逆(\(\text{f}(1) \neq 0\)

\[\text{g}(n) = \frac{1}{\text{f}(1)} \Bigg( [n=1] - \sum_{i|n, i \neq 1} \text{f}(i)\text{g}(\frac{n}{i}) \Bigg) \]

\[(\text{f}*\text{g})(n) = \sum_{i|n} \text{f}(i)\text{g}(\frac{n}{i}) = \text{f}(1)\text{g}(n) + \sum_{i|n, i \neq 1} \text{f}(i)\text{g}(\frac{n}{i}) = [n=1] \]

积性函数及其性质

满足 \(m \bot n\)\(\text f(nm) = \text f (n) \text f (m)\) 的数论函数 \(\text f\) 称为 积性函数, 若无需满足 \(m \bot n\) 就有 \(\text f(nm) = \text f (n) \text f (m)\), 那么 \(\text f\) 被称为完全积性函数。

完全积性函数的例子:
\(\epsilon(n) = [n=1]\)
\(\text{id}_k(n) = n^k\)
\(\text 1(n) = 1\)

积性函数的例子:
\(\sigma_k(n) = \sum_{d|n} d^k\)
\(\varphi(n) = \sum_{i=1}^{n-1} [i \bot n]\)

性质1:两个积性函数的狄利克雷卷积仍然是积性函数

\[(\text f * \text g)(nm) = \sum_{d|nm} \text f(d) \text g (\frac{nm}{d}) = \sum_{a|n,b|m} \text f(ab) \text g (\frac{nm}{ab}) = \sum_{a|n}\text f(a) \text g (\frac{n}{a}) \sum_{b|m} \text f(b) \text g (\frac{m}{b}) = (\text f * \text g)(n) (\text f * \text g)(m) \]

性质2:积性函数的逆是积性函数
证明以后再说吧。

莫比乌斯反演

\(\mu * \text 1 = \epsilon\), 故

\[\text f(n) = \sum_{d|n} \text g(d) \Leftarrow\Rightarrow \text g(n) = \sum_{d|n} \text f(d) \mu(\frac{n}{d}) \]

还有另一方向上的莫比乌斯反演, 在这不述。

什么是 \(\mu\)

由于 \(\text 1\) 是积性函数, 所以作为其逆的 \(\mu\) 也是积性函数, 那么从参数 \(p^k \;\;(p \in \{prime\}, k \ge 0)\) 开始:

\[(\text 1 * \mu)(n) = [n=1] \]

\((\text 1 * \mu)(1) = \mu(1) = [1=1] = 1\), 故 \(\mu(1) = 1\)
\((\text 1 * \mu)(p^1) = \mu(1) + \mu(p^1) = [p^1 = 1] = 0\), 故 \(\mu(p_1) = -1\)
依着这个思路, 可得 \(\mu(p^2) = 0\), 再用归纳法就可得 \(\mu(p^k) = 0 \;\;(k>1)\)

所以, 对于一般的 \(n \in N_+\)

\[\mu(n) = \begin{cases} (-1)^k, \;\; n = p_1p_2\cdots p_k 且 p_1p_2\cdots p_k 互不相同 \\ 0, \;\;\;\;\;\;\;\; n 有平方因子 \end{cases} \]

通过例题学习基本技巧与小 trick(待补)

基本套路

最常见的套路

对于 \(\sum_{1 \le i,j \le n}\text f(gcd(i,j))\) 来说, 如果能找到 \(\text g\) 使得 \(\text f = \text g * \text 1\), 那么就有:

\[\sum_{1 \le i,j \le n} \text f(gcd(i,j)) = \sum_{1 \le i,j \le n} \sum_{d|gcd(i,j)} g(d) = \sum_{1 \le i,j \le n} \sum_{d|i, d|j} g(d) \]

由于一个广为人知的式子: \(\sum_{a_i \in A} a_i = \sum_{a_i} a_i * (\:a_i在A中出现的次数\:)\), 有

\[\sum_{1 \le i,j \le n} \sum_{d|i, d|j} g(d) = \sum_{1 \le d \le n} g(d) \lfloor \frac{n}{d} \rfloor \lfloor \frac{n}{d} \rfloor\]

\(i,j\) 的上界不同时也差不多。

整除分块
定理:对于一个固定的正整数 \(n\) 和正整数 \(k \in [1,n]\)\(\lfloor \frac{n}{k} \rfloor\) 最多有 \(O(\sqrt n)\) 种, 且使得值为 \(q\) 的最大的 \(k\)\(\lfloor \frac{n}{q} \rfloor\)
证明:再补吧。
应用:整除函数 \(Div_k(n) = \lfloor \frac{k}{n} \rfloor\) 是递减函数, 由此衍生出应用。

本题用不到的小trick
\(\text{id}(n) = n\)\(\text{id} = \text 1 * \varphi\)

更高级的套路

怎么化这个式子?

\[\sum_{1 \le i \le n} \sum_{1 \le j \le m} \text f(gcd(i,j)) f(i) F(j) \]

解:

\[\sum_{1 \le i \le n} \sum_{1 \le j \le m} \text f(gcd(i,j)) f(i) F(j) \]

\[=\sum_{d=1}^{min(n,m)}\text f(d) \sum_{i=1}^{\lfloor \frac{n}{d} \rfloor} \sum_{j=1}^{\lfloor \frac{m}{d} \rfloor} f(id)F(jd)[gcd(i,j)=1] \]

\[= \sum_{d=1}^{min(n,m)}\text f(d) \sum_{i=1}^{\lfloor \frac{n}{d} \rfloor} \sum_{j=1}^{\lfloor \frac{m}{d} \rfloor} f(id)F(jd) \sum_{k|gcd(i,j)} \mu(k) \]

\[= \sum_{d=1}^{min(n,m)}\text f(d) \sum_{k=1}^{min\{ \lfloor \frac{n}{d} \rfloor, \lfloor \frac{m}{d} \rfloor \}} \mu(k) \sum_{i=1}^{\lfloor \frac{n}{kd} \rfloor} \sum_{j=1}^{\lfloor \frac{m}{kd} \rfloor} f(idk)F(jdk) \]

枚举 \(T = kd\)

\[原式 = \sum_{T=1}^{min(n,m)} \sum_{d|T} \text f(d)\mu(\frac{T}{d}) \sum_{i=1}^{\lfloor \frac{n}{T} \rfloor} \sum_{j=1}^{\lfloor \frac{m}{T} \rfloor} f(iT)F(jT) \]

计算 \(\mu * \text t\) 的技巧

定义

\[q_i(n) = \begin{cases} 1 , \; \; \; \; \; n=1\\ -1, \; \; n = p_i \\ 0 , \;\;\;\;\;else\end{cases} \]

其中, \(p_i\) 是第 \(i\) 小的质数。

结论:那么 \(\mu = q_1 * q_2 * \cdots\)
证明:如果看下这个式子 \((q_1 * q_2 * \cdots )(n)= \sum_{i_1i_2\cdots = n} q_1(i_1)q_2(i_2)\cdots\) ,还是挺显然的。
以此的算法及其复杂度:算法很显然, 将一个函数卷上 \(q_i\), 需要 \(O(\frac{n}{p_i})\) 的时间, 卷上 \(q_1, q_2, \cdots\) 就需要 \(O(\sum_{p_i \le n} \frac{n}{p_i}) = O(n \log\log n)\) 的时间。(不会证, 但肯定优于 \(O(n \log n)\)

\(\prod\) 号的处理

\(gcd(a,b)\) 的性质的推导方法

posted @ 2020-08-09 21:16  xwmwr  阅读(230)  评论(2编辑  收藏  举报