爱的飞行日记 题解

· · 题解

简单推式子题,预估难度弱省省选。

本文中时间复杂度 O(f^0)-O(f^1) 表示预处理复杂度 O(f^0),单次询问复杂度 O(f^1)

首先由 Min-max 容斥有

\operatorname{lcm}(x_1,x_2,\dots,x_n)=\prod_{S\subseteq\{1,2,\dots,n\},S \neq \varnothing}\gcd\{x_i : i \in S\}^{(-1)^{\lvert S \rvert-1}}.

事实上这个式子由 \gcd(a,b)\operatorname{lcm}(a,b) 随便算两下就出来了,不用熟知 Min-max 容斥。

由 Fibonacci 数的性质 \gcd(f_a,f_b)=f_{\gcd(a,b)},因此

\prod_{a_1=1}^{m}\prod_{a_2=1}^{m}\cdots\prod_{a_n=1}^{m}\operatorname{lcm}(f_{a_1},f_{a_2},\dots,f_{a_n})&=\prod_{a_1=1}^{m}\prod_{a_2=1}^{m}\cdots\prod_{a_n=1}^{m}\prod_{S\subseteq\{1,2,\dots,n\},S \neq \varnothing}f_{\gcd\{a_i : i \in S\}}^{(-1)^{\lvert S \rvert-1}}\\ &=\prod_{d=1}^{m}f_d^{\sum\limits_{a_1=1}^{m}\sum\limits_{a_2=1}^{m}\cdots\sum\limits_{a_n=1}^{m}\sum\limits_{S\subseteq\{1,2,\dots,n\},S \neq \varnothing}(-1)^{\lvert S \rvert-1}[\gcd\{a_i : i \in S\}=d]}\\ &=\prod_{d=1}^{m}f_d^{\sum\limits_{k=1}^{n}(-1)^{k-1}\binom{n}{k}m^{n-k}\sum\limits_{a_1=1}^{m}\sum\limits_{a_2=1}^{m}\cdots\sum\limits_{a_k=1}^{m}[\gcd(a_1,a_2,\dots,a_k)=d]}\\ &=\prod_{d=1}^{m}f_d^{\sum\limits_{k=1}^{n}(-1)^{k-1}\binom{n}{k}m^{n-k}\sum\limits_{a_1=1}^{\left\lfloor\frac{m}{d}\right\rfloor}\sum\limits_{a_2=1}^{\left\lfloor\frac{m}{d}\right\rfloor}\cdots\sum\limits_{a_k=1}^{\left\lfloor\frac{m}{d}\right\rfloor}[\gcd(a_1,a_2,\dots,a_k)=1]}\\ &=\prod_{d=1}^{m}f_d^{\sum\limits_{k=1}^{n}(-1)^{k-1}\binom{n}{k}m^{n-k}\sum\limits_{a_1=1}^{\left\lfloor\frac{m}{d}\right\rfloor}\sum\limits_{a_2=1}^{\left\lfloor\frac{m}{d}\right\rfloor}\cdots\sum\limits_{a_k=1}^{\left\lfloor\frac{m}{d}\right\rfloor}\sum\limits_{t \mid \gcd(a_1,a_2,\dots,a_k)}\mu(t)}\\ &=\prod_{d=1}^{m}f_d^{\sum\limits_{k=1}^{n}(-1)^{k-1}\binom{n}{k}m^{n-k}\sum\limits_{t=1}^{\left\lfloor\frac{m}{d}\right\rfloor}\mu(t)\left\lfloor\frac{m}{dt}\right\rfloor^{k}}\\ &=\prod_{d=1}^{m}\prod_{t=1}^{\left\lfloor\frac{m}{d}\right\rfloor}f_d^{\mu(t)\sum\limits_{k=1}^{n}(-1)^{k-1}\binom{n}{k}m^{n-k}\left\lfloor\frac{m}{dt}\right\rfloor^{k}}\\ &=\prod_{D=1}^{m}\left(\prod_{d \mid D}f_d^{\mu\left(\frac{D}{d}\right)}\right)^{m^n-\left(m-\left\lfloor\frac{m}{D}\right\rfloor\right)^n}\\ &=\prod_{D=1}^{m}F(D)^{G\left(\left\lfloor\frac{m}{D}\right\rfloor\right)}, \end{aligned}

其中

F(D)=\prod_{d \mid D}f_d^{\mu\left(\frac{D}{d}\right)},G(k)=m^n-\left(m-k\right)^n.

直接朴素预处理 F,暴力计算可以做到时间复杂度 O(m\log m)-O(m\log n)

为了优化,可以用整除分块处理上式。我们可以在 O(\log{n}) 的时间复杂度下计算 G(\cdot),现在我们考虑较快速计算 F(D)

由于

\prod_{i=1}^{D}F(i)=\prod_{d=1}^{D}f_d^{\sum\limits_{i=1}^{\left\lfloor\frac{D}{d}\right\rfloor}\mu(i)},

我们可以线性预处理 Fibonacci 数列前缀积和 \mu(\cdot) 前缀和后用整除分块在 O(\sqrt{D}\log{D}) 的时间复杂度下计算上式。时间复杂度 O(m)-O(m^{\frac{3}{4}}\log{n})

注意到模数不大,线性预处理出逆元,利用类似 Dirichlet 前缀和的方法计算卷积预处理出 F(\cdot),同时用 Euler 定理优化计算 k^n,即可做到 O(mod+m\log{\log{m}})-O(\sqrt{m}\log{mod}),空间复杂度 O(mod+m)

以上做法已经足够通过本题,但其实不考虑多组询问我们还可以做到更优。以下做法由验题人 wkywkywky 提出。

注意刚才的式子

\prod_{i=1}^{D}F(i)=\prod_{d=1}^{D}f_d^{\sum\limits_{i=1}^{\left\lfloor\frac{D}{d}\right\rfloor}\mu(i)},

我们只需要求出 F,f\mu 的块筛。其中 \mu 函数前缀和可以用杜教筛做到 O(v)-O(\frac{m}{\sqrt{v}})f 数列前缀积可以用这道题的方法,O(V+W\log W) 预处理,且对于 m/i>V,做到 O(m/W) 单次查询。

在处理出 f\mu 的基础上,预处理 F 的前缀积到 O(w),可以做到 O(w\log\log w\log mod)-O(\frac m{\sqrt w}\log mod)。平衡复杂度取 v,V,w=O((m\operatorname{polylog})^{2/3}),总复杂度约为 O((m\operatorname{polylog})^{2/3}),可能常数较大,瓶颈主要在 F 的计算过程中的 \log mod\mu,f,F 三部分的 \log 次数大约分别为 0,\frac13,1^+