前置芝士:数论函数。
狄利克雷卷积
定义
两个数论函数的狄利克雷卷积为:
\[(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\)。
结合数论函数
首先考虑特殊情况,\(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
结论
\[\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)\) 当然杜教一下也不是不行。