2023.3.8 闲话

膜拜国际特级大师 SMTwy
膜拜国际特级大师 SMTwy
膜拜国际特级大师 SMTwy
膜拜国际特级大师 SMTwy
膜拜国际特级大师 SMTwy

推歌:ダーリン (Darling) - MARETU .


约定素数集为 \(\mathbb P\)\(p_i\) 为第 \(i\) 个素数 .

基本定义

定义偏序集 \((R_1,\le_1)\)\((R_2,\le_2)\) 的直积(direct product)\((R,\le)=(R_1,\le_1)\times(R_2,\le_2)\) 满足

\[\begin{aligned}&R=R_1\times R_2\\&(x,y)\le(x',y')\iff(x\le_1 x')\land(y\le_2 y')\end{aligned} \]

考虑偏序集 \((\mathbb Z_+,\mid)\)(整除),根据唯一分解定理,它可以被分解为若干个线性序(或者叫全序)的直积 .

对于第 \(i\) 个素数 \(p_i\),定义 \(L_i=\{p_i^x\mid x\in\mathbb N\}\),那么「整除偏序集」就可以表示为

\[(\mathbb Z_+,\mid)=\prod_{i\ge 1}(L_i,\le) \]

熟知 Mo"bius 函数 \(\mu\) 在线性序 \((R,\le)\) 上的表现:

\[\mu(x,y)=\begin{cases}1&x=y\\-1&x+1=y\\0&\text{otherwise.}\end{cases}\qquad(\text{where }x\le y) \]

其中 \(x=y\iff x\le y\land y\le x\)\(x+1=y\iff (\forall z\neq x,y:z<x\lor y<z)\) .

根据定义可以得知,偏序集直积后,\(\delta,\zeta,\mu\) 的表现均为乘积 .

那么展开 Mo"bius 函数关于线性序直积的观察,可以得到

\[\begin{aligned}\mu(x,y)&=\prod_{i\ge 1}\mu_{L_i}(x,y)\\&=\prod_{i\ge 1}\begin{cases}1&e_i=f_i\\-1&e_i+1=f_i\\0&\text{otherwise.}\end{cases}\\&=\begin{cases}0&y/x\text{ is square-free number.}\\(-1)^{\omega(y/x)}&\text{otherwise.}\end{cases}\end{aligned}\qquad(\text{where }x\mid y) \]

其中 \(\displaystyle x=\prod_{i\ge 1}p_i^{e^i},\displaystyle y=\prod_{i\ge 1}p_i^{f_i}\)\(x,y\) 的唯一分解,\(\omega(n)\)\(n\) 的不同素因子数量 .

这其实已经导出了我们熟知的 Mo"bius 函数,根据上式可知,\(\mu(x,y)=\mu\left(1,\dfrac yx\right)\),那么令 \(\mu(x)=\mu(1,x)\),使用 Mo"bius 反演,可以得到

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

这就是 OI 中常见的 Mo"bius 反演 .

以上内容的探讨已经广为人知,下面来讨论它的一个应用 .

春季测试 2023 幂次

\([1,n]\) 中,有多少整数 \(x\) 能表示为 \(x=a^b\) 的形式,其中 \(a\ge 1,b\ge k\) .

\(1\le n\le 10^{18}\)\(1\le k\le 100\) .

首先特判 \(k=1\),那么问题变为 \(k=2\) 的答案 . 令 \(f(n)\) 表示 \([1,n]\) 能表示为 \(x=a^b\) 形式的整数 \(x\) 个数,其中 \(a\ge 1,b\ge 2\),那么答案可以简单表述为

\[f(n)-\sum_{i=2}^{k-1}f(\lfloor\sqrt[i]{n}\rfloor) \]

于是只需要快速计算 \(f\) .

发现一个数可能被多次计算,自然考虑容斥,观察到 \(a^{bx}=(a^b)^x\),那么对指数容斥即可 .

偏序集的容斥或许就是对于每个「前缀」的集合做朴素容斥原理(「前缀」大概就是 \(\{y\mid y<x\}\) 吧),于是令 \(S=\{x\mid \mu(x)\neq 0\}\) 即 square-free number 集,在 \((S,\mid)\) 上容斥,不在 \(S\) 内的数不产生贡献 .

考虑把 \((S,\mid)\) 拆解为线性序的直积,根据直觉,考虑设计线性序的容斥系数然后乘起来得到 \((S,\mid)\) 的容斥系数 .

然而线性序的容斥系数是显然的,对于元素 \(x\),如果恰有 \(z\)\(y\) 满足 \(y<x\),那么容斥系数 \(I(x)=(-1)^y\)(直接考虑对于每个「前缀」的集合做朴素容斥原理).

那么答案的容斥系数就是

\[\begin{aligned}I(x)&=-\prod_{i\ge 1}I_{L_i}(i)\\&=-\prod_{i\ge 1}(-1)^{e_i}\\&=-(-1)^{\omega(x)}\end{aligned} \]

(负号是为了算上本身的贡献)

其中 \(\displaystyle x=\prod_{i\ge 1}p_i^{e_i}\)\(x\) 的唯一分解 .

结合一下即可得到总的容斥系数就是 \(I(x)=-[x\in S](-1)^{\omega(x)}=-\mu(x)\) .

这样就能算出答案了,复杂度是 \(\Theta(k\log n)\) .

好像 GCD Matrices 的问题也能用相关做法解决,不过我没详细了解了 .


我也不知道我在写啥,要是看不懂大概是我写挂了可以评论区发一下 .

这个设计好像在 \(\N_+\) 更自然一点,\(S\) 上有点硬凑的感觉了 .

posted @ 2023-03-08 18:46  Jijidawang  阅读(92)  评论(3编辑  收藏  举报
😅​