莫比乌斯反演

前置芝士:数论函数

狄利克雷卷积

定义

两个数论函数的狄利克雷卷积为:

\[(f * g)(n) = \sum_{d \mid n} f(n) g\!\left(\dfrac{n}{d}\right) \]

经过观察我们可以发现狄利克雷卷积满足交换律,结合律,分配律。

单位元

单位函数满足 \((f * \varepsilon)(n) = f(n)\),我们称他是狄利克雷函数中的单位元,可以证明:

\[\varepsilon = \mu * \mathbf 1 \]

证明:

\[(f * \varepsilon)(n) = \sum_{d \mid n} f(d) \varepsilon \! \left(\dfrac{n}{d}\right) = \sum_{d \mid n} f(d) \left[\dfrac{n}{d} = 1\right] \]

根据莫比乌斯函数的性质,得到 \(\varepsilon = \mu * \mathbf1\)

结合数论函数

  • 除数函数与幂函数满足 \(1 * \operatorname{Id}_k = \sigma_k\)。特别的,当 \(k = 0\) 时,有 \(\operatorname{Id}_0 = 1\),也就是说 \(1 * 1 = \sigma_0\)

  • 欧拉函数与恒等函数满足 \(\varphi * 1 = \operatorname{Id}_1\)。证明:

首先考虑特殊情况,\(n = p^m\),那么有:

\[\begin{align} (\varphi * \mathbf1)(p^m) & = \sum_{d \mid n} \varphi(d)\\ & = \varphi(1) + \sum_{k = 1}^m \varphi(p^k)\\ & = 1 + \sum_{k = 1}^m p^k - p^{k - 1}\\ & = p^m \end{align} \]

因为 \(\varphi * \mathbf1\) 是积性函数,根据唯一分解定理,对于任意正整数,都有:

\[\begin{align} (\varphi * \mathbf1)(n) & = \prod_{i = 1}^k (\varphi * 1)(p_i^{c_i})\\ & = \prod_{i = 1}^k p_i^{c_i}\\ & = n \end{align} \]

Q.E.D.

  • 结合上一条,有 \(\varphi = \operatorname{Id}_1 * \mu\)

逆元

如果有函数 \(f, g\),满足 \(f * g = \varepsilon\),那么称 \(g\)\(f\) 的狄利克雷逆元。

重要结论

  1. 两个积性函数的狄利克雷卷积是积性函数
  2. 积性函数的狄利克雷逆元是积性函数

数论分块

引理 1

结论

\[\forall n \in \mathbb{N}, \left| \left\{ \left\lfloor \dfrac{n}{d} \right\rfloor \mid d\in \mathbb{N} \right\} \right| \le \left\lfloor 2 \sqrt n \right\rfloor \]

证明

\(d \le \sqrt n\) 时,最坏情况下
\(\left\lfloor \dfrac{n}{d} \right\rfloor\) 两两不同,共有 \(\sqrt{n}\) 种情况;当 \(d \gt \sqrt n\) 时,\(\left\lfloor \dfrac{n}{d}\right\rfloor\)最大为 \(\sqrt n\),最坏情况下 \(\left\lfloor \dfrac{n}{d} \right\rfloor\) 两两不同,共有 \(\sqrt{n}\) 种情况。Q.E.D.

数论分块主要用来快速求使得 \(\left\lfloor \dfrac{n}{d} \right\rfloor\) 相同的区间的左右断点。

引理 2

结论

\[\left\lfloor \frac{\left\lfloor \frac{a}{b}\right\rfloor}{c}\right\rfloor = \left\lfloor \frac{a}{bc}\right\rfloor \]

证明

\(a = nb + p \ (0 \le p \lt b)\)\(n = mc + q \ (0 \le q \lt c)\),易知 \(n = \left\lfloor \frac{a}{b}\right\rfloor, m = \left\lfloor \frac{\left\lfloor \frac{a}{b}\right\rfloor}{c}\right\rfloor\)。将右式代入左式:

\[\begin{align} a & = b(mc + q) + p\\ & = m \cdot bc + bq + p \end{align} \]

不难发现 \(0 \le bq + p \lt bc\),则 \(m = \left\lfloor \frac{a}{bc}\right\rfloor\),原式得证。

两个结论

那么对于满足 \(\left\lfloor \dfrac{n}{i} \right\rfloor = \left\lfloor \dfrac{n}{r} \right\rfloor\) 的极大 \(r\),满足:

\[r = \left\lfloor \dfrac{n}{\left\lfloor \dfrac{n}{i} \right\rfloor} \right\rfloor \]

证明:

首先有

\[\begin{cases} \left\lfloor \dfrac{n}{i} \right\rfloor \le \dfrac{n}{r} \\ \dfrac{n}{r + 1} < \left\lfloor \dfrac{n}{i} \right\rfloor \end{cases} \]

根据第一行:

\[\left\lfloor \dfrac{n}{i} \right\rfloor \le \dfrac{n}{r} \Rightarrow \dfrac{n}{\left\lfloor \dfrac{n}{i} \right\rfloor} \ge \dfrac{n}{\dfrac{n}{r}} \Rightarrow \dfrac{n}{\left\lfloor \dfrac{n}{i} \right\rfloor} \ge r \]

根据第二行:

\[\dfrac{n}{r + 1} \lt \left\lfloor \dfrac{n}{i} \right\rfloor \Rightarrow \dfrac{n}{\left\lfloor \dfrac{n}{i} \right\rfloor} \lt \dfrac{n}{\dfrac{n}{r + 1}} \Rightarrow \dfrac{n}{\left\lfloor \dfrac{n}{i} \right\rfloor} \lt r + 1 \]

得到:

\[r \le \dfrac{n}{\left\lfloor \dfrac{n}{i} \right\rfloor} \lt r + 1 \]

由于 \(r \in \mathbb{Z}\),得到最大的 \(r\)
为:

\[\left\lfloor \dfrac{n}{\left\lfloor \dfrac{n}{i} \right\rfloor} \right\rfloor \]

同理,我们不难得到那么对于满足 \(\left\lceil \dfrac{n}{i} \right\rceil = \left\lceil \dfrac{n}{l} \right\rceil\) 的极小 \(l\),满足:

\[l = \left\lceil \dfrac{n}{\left\lceil \dfrac{n}{i} \right\rceil} \right\rceil \]

数论分块就是将这些内容分为连续的 \([l, r]\)
并统一计算答案,广泛运用于莫比乌斯反演中。根据引理,复杂度一般为 \(\mathcal{O(\sqrt n)}\)

莫比乌斯反演

结论

若:

\[f(n) = (g * \mathbf1)(n) = \sum_{d \mid n} g(d) \]

那么有:

\[g(n) = (\mu * f)(n) =\sum_{d \mid n} \mu(d) f \! \left(\dfrac{n}{d}\right) \]

证明

若:

\[f = g * \mathbf1 \]

那么:

\[\mu * f = \mu * g * \mathbf1 = g * \varepsilon = g \]

Q.E.D.

常用结论

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

构造一个函数 \(g\),满足 \(f = (g * 1)\),那么有:

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

注意到如果 \(d \mid \gcd(i, j)\),那么 \(d \mid i\)\(d \mid j\)。因此我们调整求和顺序:

\[\sum_{d = 1}^n g(d) \sum_{i = 1} ^ n [d \mid i] \sum_{j = 1} ^ m [d \mid j] \Rightarrow \sum_{d = 1}^n g(d) \left\lfloor \dfrac{n}{d} \right\rfloor \left\lfloor \dfrac{m}{d} \right\rfloor \]

此时可以数论分块。

例 1

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

可以发现他等价于:

\[\begin{aligned} & \sum_{i = 1}^n \sum_{i = 1}^m \operatorname{Id}(\gcd(i, j)) \\ = & \sum_{i = 1} ^ n \sum_{j = 1} ^ m \sum_{d \mid \gcd(i, j)} \varphi(d) \\ = & \sum_{d = 1}^n \varphi(d) \left\lfloor \dfrac{n}{d} \right\rfloor \left\lfloor \dfrac{m}{d} \right\rfloor \end{aligned} \]

还有一种方式:从求值改为枚举 \(\gcd\)

\[\begin{align} & \sum_{i = 1}^n \sum_{i = 1}^m \gcd(i, j) \\ = & \sum_{i = 1}^n \sum_{i = 1}^m \sum_{d \mid i, d \mid j} [\gcd(i, j) = d] \cdot d \\ = & \sum_{d = 1}^n d \sum_{i = 1}^{\left\lfloor \frac{n}{d} \right\rfloor} \sum_{i = 1}^{\left\lfloor \frac{m}{d} \right\rfloor} [\gcd(i, j) = 1] \end{align} \]

右边的单独拿出来设为 \(f(d)\)

\[\begin{align} f(d)= & \sum_{i = 1}^{\left\lfloor \frac{n}{d} \right\rfloor} \sum_{i = 1}^{\left\lfloor \frac{m}{d} \right\rfloor} [\gcd(i, j) = 1] \\ = & \sum_{i = 1}^{\left\lfloor \frac{n}{d} \right\rfloor} \sum_{i = 1}^{\left\lfloor \frac{m}{d} \right\rfloor} \sum_{t \mid i, t \mid j} \mu(t)\\ = & \sum_{t = 1}^{\left\lfloor \frac{n}{d} \right\rfloor} \mu(t) \left\lfloor \dfrac{n}{dt} \right\rfloor \left\lfloor \dfrac{m}{dt} \right\rfloor \end{align} \]

注意:最后一步用到了一个小结论 \(\left\lfloor \dfrac{\left\lfloor \dfrac{a}{b} \right\rfloor}{c} \right\rfloor = \left\lfloor \dfrac{a}{bc} \right\rfloor\),数论分块中有写。\(f\) 算出来之后再扔回去,并设 \(T = dt\)

\[\begin{align} \sum_{d = 1}^n d \cdot f(d) = & \sum_{d = 1}^n d \sum_{t = 1}^{\left\lfloor \frac{n}{d} \right\rfloor} \mu(t) \left\lfloor \dfrac{n}{dt} \right\rfloor \left\lfloor \dfrac{m}{dt} \right\rfloor \\ = & \sum_{T = 1}^n \sum_{d \mid T} \mu\left(\frac{T}{d}\right) d \left\lfloor \dfrac{n}{T} \right\rfloor \left\lfloor \dfrac{m}{T} \right\rfloor\\ = & \sum_{T = 1}^n \left\lfloor \dfrac{n}{T} \right\rfloor \left\lfloor \dfrac{m}{T} \right\rfloor \sum_{d \mid T} \mu\left(\frac{T}{d}\right) d\\ \end{align} \]

右边的东西就是 \(\mu * \operatorname{Id}\),也就是 \(\varphi\),不懂的可以看狄利克雷卷积。虽然这种方式不如之前的简洁,但是它运用了许多常用的 trick 富有教育意义。

例 2

\[\begin{aligned} & \sum_{i = 1}^n \sum_{i = 1}^m [\gcd(i, j) = 1] \\ = & \sum_{i = 1}^n \sum_{i = 1}^m \varepsilon(\gcd(i, j)) \\ = & \sum_{i = 1} ^ n \sum_{j = 1} ^ m \sum_{d \mid \gcd(i, j)} \mu(d) \\ = & \sum_{i = 1} ^ n \sum_{j = 1} ^ m \sum_{d \mid i, d \mid j} \mu(d) \\ = & \sum_{d = 1}^n \mu(d) \left\lfloor \dfrac{n}{d} \right\rfloor \left\lfloor \dfrac{m}{d} \right\rfloor \end{aligned} \]

常用技巧

  • 尝试将求 \(\gcd\) 变为枚举 \(\gcd\),争取得到一个 \([\gcd(i, j) = 1]\),然后莫反 \([\gcd(i, j) = 1] = \sum_{d \mid \gcd(i, j)} \mu(d)\) + 数论分块。

例题 [ABC020D] LCM Rush

求:

\[\sum_{i = 1}^n \operatorname{lcm}(n, k) \]

经典操作:

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

再一次经典操作,枚举 \(\gcd\)

\[\begin{align} & k \sum_{i = 1}^n \sum_{d \mid k} [\gcd(i, k) = d] \frac{i}{d} \\ = & k \sum_{i = 1}^n \sum_{d \mid k} [d \mid i]\left[\gcd\left(\frac{i}{d}, \frac{k}{d} \right) = 1\right] \dfrac{i}{d}\\ = & k \sum_{d \mid k} \sum_{i = 1}^{\left\lfloor\frac {n} {d}\right\rfloor} \left[\gcd\left(i, \frac{k}{d} \right) = 1\right] i \end{align} \]

先把最右侧的 \(\sum\) 单独拿出来看,设 \(f(n, m) = \sum\limits_{i = 1}^{n} \left[\gcd\left(i, m \right) = 1\right] i\),则 \(ans = k \sum\limits_{d \mid k} f\left(\left\lfloor\frac {n} {d}\right\rfloor, \frac{k}{d}\right)\)

\[\begin{align} f(n, m) = &\sum\limits_{i = 1}^{n} \left[\gcd\left(i, m \right) = 1\right] i\\ = & \sum_{i = 1}^n i \sum_{d \mid \gcd\left(i, m \right)} \mu(d) \\ = & \sum_{i = 1}^n i \sum_{d \mid i, d\mid m} \mu(d) \\ = & \sum_{d \mid m} \mu(d) \sum_{i = 1}^{\left\lfloor\frac {n} {d}\right\rfloor} di\\ = & \sum_{d \mid m} \mu(d)d \sum_{i = 1}^{\left\lfloor\frac {n} {d}\right\rfloor}i \end{align} \]

直接就可做。注意到数据范围非常大,我们可以预处理 1 到 1e7 间的所有 \(\mu\),其他的暴力算。这样时间复杂度大约是 \(\mathcal{O}(\sqrt n)\)

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

\(1 \leq n, m \leq 10^7\),求:

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

替换 lcm:

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

枚举 \(\gcd\) 的值:

\[\begin{align} & \sum_{i = 1}^n \sum_{j = 1}^m \sum_{d \mid i, d \mid j} [\gcd(i, j) = d] \dfrac{i \cdot j}{d}\\ = & \sum_{d = 1}^n \sum_{i = 1}^{\left\lfloor \frac{n}{d} \right\rfloor} \sum_{j = 1}^{\left\lfloor \frac{m}{d} \right\rfloor} [\gcd(i, j) = 1] i \cdot j \cdot d\\ = & \sum_{d = 1}^n d \sum_{i = 1}^{\left\lfloor \frac{n}{d} \right\rfloor} \sum_{j = 1}^{\left\lfloor \frac{m}{d} \right\rfloor} [\gcd(i, j) = 1] i \cdot j \end{align} \]

我们把右边这部分单独拿出来,设 \(f(n, m) = \sum\limits_{i = 1}^n \sum\limits_{j = 1}^m [\gcd(i, j) = 1] i \cdot j\)

\[\begin{align} f(n, m) =& \sum\limits_{i = 1}^n \sum\limits_{j = 1}^m [\gcd(i, j) = 1] i \cdot j\\ = & \sum_{i = 1}^n \sum_{j = 1}^m \sum_{d | i, d | j} \mu(d) \cdot i \cdot j \end{align} \]

进行一些变换,先枚举 \(d\)

\[\begin{align} = & \sum_{d = 1}^n \mu(d) \sum_{i = 1}^{\left\lfloor \frac{n}{d} \right\rfloor} \sum_{j = 1}^{\left\lfloor \frac{m}{d} \right\rfloor} i \cdot j \cdot d^2\\ = & \sum_{d = 1}^n \mu(d) d^2 \sum_{i = 1}^{\left\lfloor \frac{n}{d} \right\rfloor} i \sum_{j = 1}^{\left\lfloor \frac{m}{d} \right\rfloor} j \end{align} \]

注意到这个式子前一个 \(\sum\) 可以前缀和优化,后两个 \(\sum\) 是等差数列,但是他有良好的范围:带下取整,因此可以数论分块。

至于整个式子:

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

它也可以数论分块。所以整个是 \(\mathcal{O}(n)\) 预处理 + 两次数论分块 \(\mathcal{O}(n)\),最终时间复杂度 \(\mathcal{O}(n)\)(实际上还卡不到上界)。

BJOJ2693 jzptab

上题的加强版,添加了 \(10^4\) 组多测。

继续考虑优化把式子展开:

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

\(\operatorname{Sum}(n) = \sum_{i = 1}^{n} i\),得:

\[\sum_{d = 1}^n d \cdot \sum_{t = 1}^{\left\lfloor \frac{n}{d} \right\rfloor} \mu(t) t^2 \operatorname{Sum}\left({\left\lfloor \frac{n}{dt} \right\rfloor}\right) \operatorname{Sum}\left({\left\lfloor \frac{m}{dt} \right\rfloor}\right) \]

\(dt = T\)

\[\begin{align} = & \sum_{T = 1}^n \operatorname{Sum}\left({\left\lfloor \frac{n}{T} \right\rfloor}\right) \operatorname{Sum}\left({\left\lfloor \frac{m}{T} \right\rfloor}\right) \sum_{d \mid T}^n d \cdot \mu\left(\frac{T}{d}\right) \left(\frac {T} {d}\right)^2\\ = & \sum_{T = 1}^n \operatorname{Sum}\left({\left\lfloor \frac{n}{T} \right\rfloor}\right) \operatorname{Sum}\left({\left\lfloor \frac{m}{T} \right\rfloor}\right) T \sum_{d \mid T} \mu(d) d \end{align} \]

设为 \(f(T) = \sum_{d \mid T} \mu(d)d\),得:

\[= \sum_{T = 1}^n \operatorname{Sum}\left({\left\lfloor \frac{n}{T} \right\rfloor}\right) \operatorname{Sum}\left({\left\lfloor \frac{m}{T} \right\rfloor}\right) T \cdot f(T) \]

尝试证明 \(f(T)\) 是一个积性函数:

\[f(p) = \sum_{d \mid p} \mu(d)d \quad f(q) = \sum_{d \mid q} \mu(d)d \qquad (\gcd(p, q) = 1)\\ \]

\[\begin{align} f(p) \cdot f(q) & = \left(\sum_{d \mid p} \mu(d)d\right) \left(\sum_{d \mid q} \mu(d)d\right)\\ & = \sum_{d \mid p} \mu(d)d \sum_{t \mid q} \mu(t)t\\ & = \sum_{d \mid p} \sum_{t \mid q} dt \cdot \mu(d) \mu(t)\\ \end{align} \]

\[\gcd(p, q) = 1 \Rightarrow \nexists \ d = t \Rightarrow \{d \mid d | p\} \cap \{t \mid t | q\} = \emptyset ,\{d \mid d | p\} \cup \{t \mid t | q\} = \{x \mid x | pq\} \]

\[\Downarrow\\ f(p) \cdot f(q) = \sum_{d \mid pq} d \cdot \mu(d) = f(pq) \]

Q.E.D

我们来观察 \(f\) 的一些性质:

\[f(p) = 1 - p, f(p^k) = f(p) \quad(p \in \mathbb{P}) \]

然后就可以线性筛+数论分块了。

【例题2】周期字符串

求长度为 \(n\) 且仅包含小写英文字母(小写字母不一定要全部使用)且循环节长度恰为 \(n\) 的字符串的个数。循环节就是最短的复制若干遍后拼起来跟原串相等的字符串。答案对 \(10^9 + 7\) 取模。

jpdh 的题,重要的在于转化以及状态设计。

\(f(n)\) 为循环节恰好为 \(n\) 的字符串个数,\(g(n)\) 为长度为 \(n\) 的字符串个数(\(26^n\))。注意到 \(g(n)\) 如果存在循环节,那么长度一定是 \(n\) 因数,因此我们可以枚举循环节长度,根据加法原理:

\[g(n) = \sum_{d \mid n} f(n) = (f * 1)(n) \Rightarrow f(n) = (g * \mu)(n) \]

裸的莫比乌斯反演,甚至是直接爆算 \(\mu\)

BJOJ2694 Lcm

注意到题意有一个类似于莫比乌斯函数的东西,尝试让他用一个式子表示出来:

\[\sum_{i = 1}^A \sum_{j = 1}^B \operatorname{lcm}(i, j) \mu^2(\gcd(i, j)) \]

推一推:

\[\begin{align} = & \sum_{i = 1}^A \sum_{j = 1}^B \frac{ij}{\gcd(i, j)} \mu^2(\gcd(i, j)) \\ = & \sum_{i = 1}^A \sum_{j = 1}^B \sum_{d \mid i} \mu^2(d) \frac{ij}{d}[\gcd(i, j) = d] \\ = & \sum_{d = 1}^A \sum_{i = 1}^{\left\lfloor \frac{A}{d} \right\rfloor} \sum_{j = 1}^{\left\lfloor \frac{B}{d} \right\rfloor} \mu^2(d) ijd [\gcd(i, j) = 1] \\ = & \sum_{d = 1}^A \mu^2(d) d \sum_{i = 1}^{\left\lfloor \frac{A}{d} \right\rfloor} \sum_{j = 1}^{\left\lfloor \frac{B}{d} \right\rfloor} ij \sum_{t \mid i, t \mid j} \mu(t) \\ = & \sum_{d = 1}^A \mu^2(d) d \sum_{t = 1}^{\left\lfloor \frac{A}{d} \right\rfloor} \sum_{i = 1}^{\left\lfloor \frac{A}{dt} \right\rfloor} \sum_{j = 1}^{\left\lfloor \frac{B}{dt} \right\rfloor} \mu(t) \cdot ijt^2 \\ = & \sum_{d = 1}^A \mu^2(d) d \sum_{t = 1}^{\left\lfloor \frac{A}{d} \right\rfloor} \mu(t) t^2 \sum_{i = 1}^{\left\lfloor \frac{A}{dt} \right\rfloor} \sum_{j = 1}^{\left\lfloor \frac{B}{dt} \right\rfloor} ij \\ \end{align} \]

设 \(S(n) = \sum_{i = 1}^ni\),并且 \(T=dt\)

\[\begin{align} = & \sum_{d = 1}^A \mu^2(d) d \sum_{t = 1}^{\left\lfloor \frac{A}{d} \right\rfloor} \mu(t) t^2 S\left(\left\lfloor \frac{A}{d} \right\rfloor\right) \cdot S\left(\left\lfloor \frac{B}{d} \right\rfloor\right)\\ = & \sum_{T = 1}^A S\left(\left\lfloor \frac{A}{d} \right\rfloor\right) \cdot S\left(\left\lfloor \frac{B}{d} \right\rfloor\right) \sum_{d \mid T} \mu^2(d) d \cdot \mu\left(\frac{T}{d}\right) \left(\frac{T}{d}\right)^2\\ = & \sum_{T = 1}^A S\left(\left\lfloor \frac{A}{d} \right\rfloor\right) \cdot S\left(\left\lfloor \frac{B}{d} \right\rfloor\right) T \sum_{d \mid T} \mu^2(d) \cdot \mu\left(\frac{T}{d}\right) \left(\frac{T}{d}\right) \end{align} \]

可以发现后面又是一个卷积的形式,设它为 \(g(T)\),卷积的两个函数都是积性函数,因此 \(g\) 也是积性函数。我们来分析 \(g(n)\)

  • 如果 \(n\) 含有三个及以上个质因数,那么无论它如何拆分,总有一个 \(\mu\) 会得 \(0\),则 \(g(n)=0\)
  • 如果 \(n \in \mathbb P\),手玩发现 \(g(n)=−p^2+p\)
  • 如果 \(n=p^2,p \in \mathbb P\),手玩得到 \(g(n)=−p^3\)

观察完毕,\(g\) 可以线性筛,整个可以数论分块。

CF1139D Steps to One

给一个数列,每次随机选一个 \(1\) 到 \(m\) 之间的数加在数列末尾,数列中所有数的 \(\gcd=1\) 时停止,求期望长度。

解法很多,这里介绍一种:

研究一下概率与期望之间的转换:

\[\begin{aligned} E(len) & = \sum_{i \ge 1} P(len = i) \cdot i \\ & = \sum_{i \ge 1} P(len = i) \sum_{j = 1}^i 1 \\ & = \sum_{j \ge 1} \sum_{i \ge j} P(len = i) \\ & = \sum_{i \ge 1} P(len \ge i) \\ & = 1 + \sum_{i \ge 1} P(len > i) \end{aligned} \]

然后我们把关于 \(P\) 的单独拿出来看:

\[\begin{align} P(len > i) & = P\left(\gcd \limits_{j = 1}^i a_j > 1 \right) \\ & = 1 - P\left(\gcd \limits_{j = 1}^i a_j = 1 \right)\\ & = \frac{\sum_{a_1 = 1}^m\sum_{a_2 = 1}^m\cdots\sum_{a_i = 1}^m [\gcd_{j = 1}^i a_j = 1]} {m^i} \end{align} \]

对后面那一坨莫反:

\[\begin{align} P(len > i) = & 1 - \frac{\sum_d \sum_{a_1 = 1}^m \cdots \sum_{a_i = 1}^m [\gcd_{j = 1}^i a_j = d]}{m ^ i}\\ = & 1 - \frac{\sum_d\sum_{a_1 = 1}^{\lfloor\frac md\rfloor} \cdots \sum_{a_i = 1}^{\lfloor\frac md\rfloor} \mu(d)}{m ^ i}\\ = & 1 - \frac{\sum_d\mu(d)\lfloor\frac md\rfloor^i}{m ^ i}\\ \end{align} \]

注意到 \(d = 1\)\(\sum\) 里面的其实就是 \(m^i\),所以可以进一步简写为:

\[\begin{align} = & - \frac{\sum_{d = 2}^m\mu(d)\lfloor\frac md\rfloor^i}{m ^ i} \end{align} \]

然后回代到期望的式子,也就是:

\[\begin{align} E(len) = & 1 + \sum_{i = 1}^{+\infty} P(len > i)\\ = & 1 - \sum_{i = 1}^{+\infty}\frac{\sum_{d = 2}^m\mu(d)\lfloor\frac md\rfloor^i}{m ^ i}\\ = & 1 - \sum_{i = 1}^{+\infty}\frac 1{m^i} \sum_{d = 2}^m\mu(d)\left\lfloor\frac md\right\rfloor^i\\ = & 1 - \sum_{d = 2}^m \mu(d)\sum_{i = 1}^{+\infty} \left(\frac {\left\lfloor\frac md\right\rfloor}{m} \right)^i\\ \end{align} \]

注意到最后边的部分是无限项等比数列求和,可以利用简单具体数学知识的得到:

\[E(len) = 1 - \sum_{d = 2}^m \mu(d) \frac{m}{m - \left\lfloor\frac md\right\rfloor} \]

\(\mathcal O(m)\) 线性筛 \(\mu\) 然后直接算就行,复杂度 \(\mathcal O(m)\) 当然杜教一下也不是不行

posted @ 2025-04-29 14:48  kncjjdr05  阅读(9)  评论(0)    收藏  举报