[MtOI2019]幽灵乐团 / 莫比乌斯反演基础练习题
题目描述
东风谷 早苗(Kochiya Sanae)非常喜欢幽灵乐团的演奏,她想对她们的演奏评分。
因为幽灵乐团有 \(3\) 个人,所以我们可以用 \(3\) 个正整数 \(A,B,C\) 来表示出乐团演奏的分数,她们的演奏分数可以表示为
\[\prod_{i=1}^{A}\prod_{j=1}^{B}\prod_{k=1}^{C}\left(\frac{\text{lcm}(i,j)}{\gcd(i,k)}\right)^{f(type)}
\]
因为音乐在不同的部分会有不同的听觉感受,所以 \(type\) 会在 \(\{0,1,2\}\) 中发生变化,其中:
\[\begin{aligned}
f(0)&=1 \cr
f(1)&=i \times j \times k \cr
f(2)&=\gcd(i,j,k)
\end{aligned}\]
因为乐团的歌实在太好听了,导致分数特别高,所以她们的分数要对给定的正整数 \(p\) 取模。
因为有很多歌曲要演奏,所以早苗给出了 \(T\) 组询问。
对于 \(100\%\) 的数据:
\[1\leq A,B,C\leq 10^5 \ \ \ \ 10^7 \leq p \leq 1.05\times 10^9\ \ \ \ p\in \{ prime\} \ \ \ \ T =70
\]
思路点拨
主要还是根据我的 莫反套路 来进行推导。真的十分经典,可以看一看(广告)
先看到原式,这个式子可以使用 \(lcm(i,j)=\dfrac{ij}{gcd(i,j)}\) 。
\[\prod_{i=1}^{A}\prod_{j=1}^{B}\prod_{k=1}^{C}\left(\frac{\text{lcm}(i,j)}{\gcd(i,k)}\right)^{f(type)}=\prod_{i=1}^{A}\prod_{j=1}^{B}\prod_{k=1}^{C}\left(\frac{ij}{\gcd(i,j)\gcd(i,k)}\right)^{f(type)}
\]
因为是模意义下的乘法,所以我们分子分母可以简答合并一下,那么就是:
\[\dfrac{\prod_{i=1}^A \prod_{j=1}^B \prod_{k=1}^C (ij)^f}{\prod_{i=1}^A \prod_{j=1}^B \prod_{k=1}^C \gcd(i,j)\gcd(i,k)^{f}}
\]
至此操作很常规,和一道叫 product 的莫反题一样。
然后我们考虑分子和分母,这又可以拆分:
\[\prod_{i=1}^A \prod_{j=1}^B \prod_{k=1}^C (ij)^f=\prod_{i=1}^A \prod_{j=1}^B \prod_{k=1}^C i^f\prod_{i=1}^A \prod_{j=1}^B \prod_{k=1}^C j^f
\]
这都差不多,一下只讲解左边一半 \(\prod_{i=1}^A \prod_{j=1}^B \prod_{k=1}^C i^f\)
分母差不多,也只讲解左边一半,右边是一样的。
\[\prod_{i=1}^A \prod_{j=1}^B \prod_{k=1}^C \gcd(i,j)^f
\]
\(type\) 三种,没有什么太大关联,所以分开讲解了。
\(type=0\)
这部分幼儿园随便写。前提是看了我的博客(广告推销)
此时 \(f=1\) 。十分的人性化,但是分数很少。
先讲最简单的分子(还是再讲一遍,我们分子分母都只讲一半,另一半是一样的):
\[=\prod_{i=1}^A i^{BC}
\]
$O(n) $ 阶乘快速幂直接过。分母也很简单:
\[=\prod_{i=1}^A \prod_{j=1}^B \prod_{k=1}^C \gcd(i,j)
\]
和 \(k\) 没有什么太大关系啊,我们算 \(\prod_{i=1}^A \prod_{j=1}^B\gcd(i,j)\) ,带上 \(C\) 的幂就可以了。
看到这种式子,我们也是使用技巧(可以看一下上面的博客,广告):枚举 \(\gcd\) ,然后式子就可以转化:
\[\prod_{d=1}^{A}d^{\sum_{i=1}^A \sum_{j=1}^B [\gcd(i,j)=d]}
\]
先考虑一下幂:
\[\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=1}^i \mu(k)[k|i][k|j]
\]
我们进而枚举 \(k\) :
\[\sum_{k=1}^{\lfloor \frac{A}{d}\rfloor} \mu(k) \lfloor \dfrac{A}{kd}\rfloor \lfloor \dfrac{B}{kd} \rfloor
\]
我们集合 \(kd\) ,直接释放奥义 \(T=kd\) ,带回原式枚举 \(T\)
\[\prod_{d=1}^{A}d^{\sum_{k=1}^{\lfloor \frac{A}{d}\rfloor} \mu(k) \lfloor \frac{A}{kd}\rfloor \lfloor \frac{B}{kd} \rfloor}=\prod_{T=1}^{A} (\prod_{d|T}d^{\mu(\frac{T}{d})})^{\lfloor \frac{A}{T}\rfloor \lfloor \frac{B}{T}\rfloor}
\]
而中间括号内的部分 \(O(n \log n)\) 预处理一下。富比尼定理枚举 \(T\) ,时间复杂度 \(O(T(\sqrt A \log AB)+n \log n)\) 。大抵是可以过的罢。
这部分推出来是很基础的。
\(type=1\)
这部分还是偏简单。
分子有点侮辱智商,我们直接写出答案:
\[\prod_{i=1}^A i^{i \times \frac{B(1+B)C(1+C)}{4}}
\]
考虑分母:
\[=\prod_{i=1}^A \prod_{j=1}^B \prod_{k=1}^C \gcd(i,j)^{ijk}
\]
与 \(k\) 没有多大关系,所以直接提出去:
\[=(\prod_{i=1}^A \prod_{j=1}^B \gcd(i,j)^{ij})^{\frac{(1+C)C}{2}}
\]
考虑括号内的数,使用技能 枚举 \(\gcd\) :
\[=\prod_{d=1}^A d^{\sum_{i=1}^A\sum_{j=1}^B ij[\gcd(i,j)=d]}
\]
\[=\prod_{d=1}^A d^{d^2 \sum_{i=1}^{\lfloor \frac{A}{d}\rfloor}\sum_{j=1}^{\lfloor \frac{B}{d}\rfloor} ij[\gcd(i,j)=1]}
\]
使用莫比乌斯反演:
\[=\prod_{d=1}^{A} d^{d^2\sum_{k=1}^{\lfloor \frac{A}{d}\rfloor} k^2 \mu(k) \frac{(1+
\frac{A}{kd})\frac{A}{kd}}{2}\frac{(1+
\frac{B}{kd})\frac{B}{kd}}{2}}\]
现在我们使用三界魔法 \(T=kd\) 对其绝杀:
\[=\prod_{d=1}^A \prod_{k=1}^{\lfloor \frac{A}{d}\rfloor} d^{d^2k^2\mu(k)\frac{(1+
\frac{A}{kd})\frac{A}{kd}}{2}\frac{(1+\frac{B}{kd})\frac{B}{kd}}{2}}\]
\[=\prod_{T=1}^A ( \prod_{d|T} d^{\mu(\frac{T}{d})} )^{\frac{(1+
\frac{A}{T})\frac{A}{T}}{2}\frac{(1+\frac{B}{T})\frac{B}{T}}{2}\times T^2} \]
实现一样的,括号内预处理,其余的富比尼定理优化一下就可以了。时间复杂度和 \(type=0\) 是一样的。
\(type=2\)
这部分是很有挑战的了,我目前没有推出分母。但是分子是比较简单的。
我们按照套路,枚举一下 \(\gcd(i,j,k)\)
\[=\prod_{i=1}^A\prod_{j=1}^B\prod_{k=1}^C i^{\gcd(i,j,k)}
\]
底数至于 \(i\) 有关,直觉提前 \(i\) ,
\[=\prod_{i=1}^A i^{\sum_{j=1}^B \sum_{k=1}^C \gcd(i,j,k)}
\]
幂的部分拎出来先,这部分的 Latex 比较复杂,如果还是像 \(type=1\) 的样子写我会去世的。
\[\sum_{j=1}^B\sum_{k=1}^C \gcd(i,j,k)=\sum_{d|i} d \sum_{j=1}^{\lfloor \frac{B}{d}\rfloor}\sum_{k=1}^{\lfloor \frac{C}{d}\rfloor} [\gcd(\frac{i}{d},j,k)=1]
\]
开始莫反:
\[=\sum_{d|i} d \sum_{k|\frac{i}{d}}^{\lfloor \frac{B}{d}\rfloor} \mu(k) \lfloor \frac{B}{kd}\rfloor \lfloor \frac{C}{kd}\rfloor
\]
我们发动三阶魔法 \(T=kd\) ,对其进行推导(血条太厚了,没有终结掉):
\[=\sum_{T|i} \lfloor \dfrac{B}{T}\rfloor \lfloor \dfrac{C}{T}\rfloor (\sum_{d|T}d\mu(\frac{T}{d}))
\]
括号内什么筛法预处理就可以了,再做一个前缀和。其余的部分富比尼定理优化计算。\(O(T\sqrt n)\) 。