本文中,约定 \(n\le m\),\(a\bot b\) 表示 \(a\) 与 \(b\) 互质,\(\mathbb P\) 为全体质数集合。
\(\large\mathbf I\)
先来看一些函数:
\(\varphi(n)=|\{x|x\le n,x\bot n\}|\)(欧拉函数)
\(\mu(n)=\begin{cases}0&\exists x\not=1,x^2|n\\1&
\displaystyle(\sum[d|n,d\in \mathbb P])\bmod2=0\\-1&\displaystyle(\sum[d|n,d\in \mathbb P])\bmod2=1\end{cases}\)(莫比乌斯函数)
\(\sigma(n)=\displaystyle\sum_{d|n}d\)(除数函数)
上面这些函数都是数论函数,且为积性函数,即当 \(a\bot b\) 时满足 \(f(ab)=f(a)f(b)\)。
还有一些特殊的函数:
\(I(n)=1\) (常函数)
\(id(n)=n\) (标号函数)
\(\varepsilon(n)=[n=1]\) (元函数)
这些函数在任何情况下都满足 \(f(ab)=f(a)f(b)\),被称为完全积性函数。
对于多项式函数,我们有一般的卷积;对于数论函数,我们有狄利克雷卷积:
\[f*g=\sum_{d|n}f(d)g(\dfrac{n}{d})
\]
那么有:
\[f*\varepsilon=f
\]
\[\mu*I=\varepsilon
\]
\[\varphi*I=id
\]
\[\mu*id=\varphi
\]
显然,狄利克雷卷积拥有交换律,结合律和分配律。
\(\large\mathbf{II}\)
莫比乌斯反演公式:
\[f(n)=\sum_{d|n}g(d)\to g(n)=\sum_{d|n}\mu(d)f(\frac{n}{d})
\]
证明:左等式告诉我们 \(f=g*I\),
所以右等式的右边 \(\mu*f=\mu*g*I=g*\varepsilon\),也就等于 \(g\)。\(\blacksquare\)
接下来证明一些做题时要用到的东西。
- \(\displaystyle\sum_{d|n}\mu(d)=[n=1]\)
证明:\(\mu*I=\varepsilon\)。\(\blacksquare\)
- \(\displaystyle\sum_{i=1}^n\sum_{d|i}\mu(d)=\sum_{d=1}^n\left\lfloor\frac{n}{d}\right\rfloor\mu(d)\)
证明:交换求和顺序即可,\(d\) 是 \(\left\lfloor\frac{n}{d}\right\rfloor\) 个数的因子。\(\blacksquare\)
注:对于上面这个式子,@qzz33554432提出了是否可以通过上一个引理推出它恒等于 \(1\)。实际上,在 \(d\) 没有取值限制时上式确实等于 \(1\),但是当 \(d\) 有取值限制时它并不等于 \(1\),但等号仍然成立。你将在下一个引理证明过程中明白我的意思。十分感谢!
- \(\displaystyle\sum_{i=1}^n\sum_{j=1}^m[i\bot j]=\sum_{d=1}^n\left\lfloor\frac{n}{d}\right\rfloor\left\lfloor\frac{m}{d}\right\rfloor\mu(d)\)
证明:
\[\begin{aligned}
\sum_{i=1}^n\sum_{j=1}^m[i\bot j]
&=\sum_{i=1}^n\sum_{j=1}^m[\gcd(i,j)=1]\\
&=\sum_{i=1}^n\sum_{j=1}^m\sum_{d|\gcd(i,j)}\mu(d)\\
&=\sum_{i=1}^n\sum_{j=1}^m\sum_{d|i}\sum_{d|j}\mu(d)\\
&=\sum_{i=1}^n\sum_{d|i}\sum_{j=1}^m\sum_{d|j}\mu(d)\\
&=\sum_{i=1}^n\sum_{d|i}\sum_{d=1}^m\left\lfloor\frac{m}{d}\right\rfloor\mu(d)\\
&=\sum_{d=1}^n\left\lfloor\frac{n}{d}\right\rfloor\sum_{d=1}^m\left\lfloor\frac{m}{d}\right\rfloor\mu(d)\\
&=\sum_{d=1}^n\left\lfloor\frac{n}{d}\right\rfloor\left\lfloor\frac{m}{d}\right\rfloor\mu(d)\quad\blacksquare
\end{aligned}\]
\(\large\mathbf{III}\)
- 求 \(\displaystyle\sum_{i=1}^n\sum_{j=1}^m[\gcd(i,j)=k]\)。
\[\displaystyle\sum_{i=1}^n\sum_{j=1}^m[\gcd(i,j)=k]=\displaystyle\sum_{i=1}^{\lfloor\frac{n}{k}\rfloor}\sum_{j=1}^{\lfloor\frac{m}{k}\rfloor}[\gcd(i,j)=1]
\]
就和上面一样了。
- 求 \(\displaystyle\sum_{i=1}^n\sum_{j=1}^mij[\gcd(i,j)=k]\)。
\[\begin{aligned}
\sum_{i=1}^n\sum_{j=1}^mij[\gcd(i,j)=k]
&=\sum_{i=1}^{\lfloor\frac{n}{k}\rfloor}\sum_{j=1}^{\lfloor\frac{m}{k}\rfloor}ik\times jk[\gcd(i,j)=1]\\
&=k^2\sum_{i=1}^{\lfloor\frac{n}{k}\rfloor}\sum_{j=1}^{\lfloor\frac{m}{k}\rfloor}ij\sum_{d|i}\sum_{d|j}\mu(d)\\
&=k^2\sum_{d=1}^{\lfloor\frac{n}{k}\rfloor}\sum_{i=1}^{\lfloor\frac{n}{kd}\rfloor}\sum_{j=1}^{\lfloor\frac{m}{kd}\rfloor}id\times jd\mu(d)\\
&=k^2\sum_{d=1}^{\lfloor\frac{n}{k}\rfloor}d^2\mu(d)\sum_{i=1}^{\lfloor\frac{n}{kd}\rfloor}i\sum_{j=1}^{\lfloor\frac{m}{kd}\rfloor}j
\end{aligned}\]
这里后面的两个 \(\large\Sigma\) 是等差数列求和,可以 \(\mathcal O(1)\) 计算,前面的可以整除分块做到 \(\mathcal O(\sqrt n)\)。
- 求 \(\displaystyle\sum_{i=1}^n\sum_{j=1}^m\operatorname{lcm}(i,j)\)。
\[\begin{aligned}
\sum_{i=1}^n\sum_{j=1}^m\operatorname{lcm}(i,j)
&=\sum_{i=1}^n\sum_{j=1}^m\frac{ij}{\gcd(i,j)}\\
&=\sum_{k=1}^n\sum_{i=1}^n\sum_{j=1}^m\frac{ij}{k}[\gcd(i,j)=k]\\
&=\sum_{k=1}^n\sum_{i=1}^{\lfloor\frac{n}{k}\rfloor}\sum_{j=1}^{\lfloor\frac{m}{k}\rfloor}ijk[\gcd(i,j)=1]\\
&=\sum_{k=1}^n\sum_{i=1}^{\lfloor\frac{n}{k}\rfloor}\sum_{j=1}^{\lfloor\frac{m}{k}\rfloor}ijk\sum_{d|i}\sum_{d|j}\mu(d)\\
&=\sum_{k=1}^nk\sum_{d=1}^{\lfloor\frac{n}{k}\rfloor}\mu(d)d^2\sum_{i=1}^{\lfloor\frac{n}{kd}\rfloor}i\sum_{j=1}^{\lfloor\frac{m}{kd}\rfloor}j
\end{aligned}\]
\(\left\lfloor\dfrac{n}{k}\right\rfloor\) 分块一次,\(\left\lfloor\dfrac{n}{kd}\right\rfloor\) 分块一次,总复杂度 \(\mathcal O(\sqrt n) \times \mathcal O(\sqrt n)=\mathcal O(n)\)。
接下来看一些例题吧。
\(\large\mathbf{IV}\)
P1829
这题其实就是刚刚的那道 \(\operatorname{lcm}\)。这里再讨论一种 \(\mathcal O(n)-\mathcal O(\sqrt n)\) 解法。
回到第三步:
\[\begin{aligned}
\sum_{k=1}^n\sum_{i=1}^{\lfloor\frac{n}{k}\rfloor}\sum_{j=1}^{\lfloor\frac{m}{k}\rfloor}ijk[\gcd(i,j)=1]
&=\sum_{k=1}^nk\sum_{i=1}^{\lfloor\frac{n}{k}\rfloor}\sum_{j=1}^{\lfloor\frac{m}{k}\rfloor}ij\sum_{d|i}\sum_{d|j}\mu(d)\\
&=\sum_{k=1}^nk\sum_{d=1}^{\lfloor\frac{n}{k}\rfloor}\mu(d)d^2\sum_{i=1}^{\lfloor\frac{n}{kd}\rfloor}i\sum_{j=1}^{\lfloor\frac{m}{kd}\rfloor}j
\end{aligned}\]
令 \(s=kd\),则
\[\begin{aligned}
\sum_{k=1}^n\sum_{i=1}^{\lfloor\frac{n}{k}\rfloor}\sum_{j=1}^{\lfloor\frac{m}{k}\rfloor}ijk[\gcd(i,j)=1]
&=\sum_{k=1}^nk\sum_{d=1}^{\lfloor\frac{n}{k}\rfloor}\mu(d)d^2\sum_{i=1}^{\lfloor\frac{n}{s}\rfloor}i\sum_{j=1}^{\lfloor\frac{m}{s}\rfloor}j\\
&=\sum_{s=1}^ns\sum_{d|s}\mu(d)d\sum_{i=1}^{\lfloor\frac{n}{s}\rfloor}i\sum_{j=1}^{\lfloor\frac{m}{s}\rfloor}j
\end{aligned}\]
现在的 \(\displaystyle\sum_{d|s}\mu(d)d\) 可以 \(\mathcal O(n)\) 线性筛出,剩下的东西做一次分块可以 \(\mathcal O(\sqrt n)\)。
P2257
求 \(\displaystyle\sum_{i=1}^n\sum_{j=1}^m[\gcd(i,j)\in\mathbb P]\)。
\[\begin{aligned}
\sum_{i=1}^n\sum_{j=1}^m[\gcd(i,j)\in\mathbb P]
&=\sum_{k}^{k\in[1,n]\cap\mathbb P}\sum_{i=1}^{\lfloor\frac{n}{k}\rfloor}\sum_{j=1}^{\lfloor\frac{m}{k}\rfloor}[\gcd(i,j)=1]\\
&=\sum_{k}^{k\in[1,n]\cap\mathbb P}\sum_{d=1}^n\left\lfloor\frac{n}{kd}\right\rfloor\left\lfloor\frac{m}{kd}\right\rfloor\mu(d)
\end{aligned}\]
令 \(s=kd\),则
\[\begin{aligned}
\sum_{i=1}^n\sum_{j=1}^m[\gcd(i,j)\in\mathbb P]
&=\sum_{k}^{k\in[1,n]\cap\mathbb P}\sum_{d=1}^n\left\lfloor\frac{n}{s}\right\rfloor\left\lfloor\frac{m}{s}\right\rfloor\mu(d)\\
&=\sum_{s=1}^n\left\lfloor\frac{n}{s}\right\rfloor\left\lfloor\frac{m}{s}\right\rfloor\sum_{k|s}^{k\in\mathbb P}\mu(\frac{s}{k})
\end{aligned}\]
右边的 \(\large\Sigma\) 可以筛完预处理,左边的分块即可。
P3312
求 \(\displaystyle\sum_{i=1}^n\sum_{j=1}^m\sigma(\gcd(i,j))[\sigma(\gcd(i,j))\le a]\)。
\[\begin{aligned}
\sum_{i=1}^n\sum_{j=1}^m\sigma(\gcd(i,j))
&=\sum_{d=1}^n\sigma(d)\sum_{i=1}^n\sum_{j=1}^m[\gcd(i,j)=d]\\
&=\sum_{d=1}^n\sigma(d)\sum_{i=1}^{\lfloor\frac{n}{d}\rfloor}\sum_{j=1}^{\lfloor\frac{m}{d}\rfloor}[\gcd(i,j)=1]\\
&=\sum_{d=1}^n\sigma(d)\sum_{k=1}^{\lfloor\frac{n}{d}\rfloor}\left\lfloor\frac{n}{kd}\right\rfloor\left\lfloor\frac{m}{kd}\right\rfloor\mu(d)
\end{aligned}\]
令 \(s=kd\),则
\[\begin{aligned}
\sum_{i=1}^n\sum_{j=1}^m\sigma(\gcd(i,j))
&=\sum_{d=1}^n\sigma(d)\sum_{k=1}^{\lfloor\frac{n}{d}\rfloor}\left\lfloor\frac{n}{s}\right\rfloor\left\lfloor\frac{m}{s}\right\rfloor\mu(k)\\
&=\sum_{s=1}^n\sum_{d|s}\sigma(d)\mu(\frac{s}{d})\left\lfloor\frac{n}{s}\right\rfloor\left\lfloor\frac{m}{s}\right\rfloor\\
&=\sum_{s=1}^n\left\lfloor\frac{n}{s}\right\rfloor\left\lfloor\frac{m}{s}\right\rfloor\sum_{d|s}\sigma(d)\mu(\frac{s}{d})
\end{aligned}\]
这个式子已经足够漂亮了。
接下来考虑将每个询问按 \(a\) 排序,对于每次新加进满足域的 \(\sigma(d)\),我们枚举 \(s\le n\) 使得 \(d|s\),这个 \(s\) 为答案加上 \(\sigma(d)\mu(\dfrac{s}{d})\) 的贡献。
注意到分块的时候需要用到区间求和,所以现在需要一个支持”单点加贡献,区间查询“的东西。这个用树状数组维护即可。
复杂度 \(\mathcal O(n\log^2n+T\sqrt n\log n)\)。
P4318
求第 \(k\) 个不含完全平方因子的数。
首先二分答案,接下来要解决的就是 \(1\sim mid\) 中有多少个不含完全平方因子的数。
容斥一下,我们筛去 \(2^2\) 的倍数,筛去 \(3^2\) 的倍数。注意到 \(4\) 有完全平方因子,肯定之前已经被筛过了,所以可以直接跳过。
继续筛去 \(5^2\) 的倍数,然后发现 \(6^2\) 被 \(2^2\) 和 \(3^2\) 筛了两遍,所以应该加回来一遍。
于是,我们现在需要这个一个函数:
显然这个函数就是 \(\mu\)。
最后答案为 \(\displaystyle\sum_{i=1}^{\sqrt n}\mu(i)\left\lfloor\frac{n}{i^2}\right\rfloor\),\(\mathcal O(\sqrt n)\) 暴力计算即可。
P6271
给你 \(\displaystyle n=\prod_{i=1}^wp_i^{\alpha_i}\),求 \(\displaystyle\sum_{i=1}^ni^d[\gcd(i,n)=1]\)。
\[\begin{aligned}
\sum_{i=1}^ni^d[\gcd(i,n)=1]
&=\sum_{i=1}^ni^d\sum_{k|i}\sum_{k|n}\mu(k)\\
&=\sum_{k|n}\mu(k)\sum_{i=1}^{\frac{n}{k}}(ik)^d\\
&=\sum_{k|n}\mu(k)k^d\sum_{i=1}^{\frac{n}{k}}i^d
\end{aligned}\]
设 \(\displaystyle f(x)=\sum_{i=1}^xi^d\),我们知道这个函数一定可以表示成一个关于 \(x\) 的 \(d + 1\) 次多项式,而且我们可以在 \(\mathcal O(d^3)\) 或者 \(\mathcal O(d^2)\) 的时间内用插值,消元或者伯努利公式求出它的系数。
于是设 \(\displaystyle f(x)=\sum_{i=0}^{d+1}a_ix^i\),则
\[\begin{aligned}
\sum_{i=1}^ni^d[\gcd(i,n)=1]
&=\sum_{k|n}\mu(k)k^df\left(\frac{n}{k}\right)\\
&=\sum_{k|n}\mu(k)k^d\sum_{i=0}^{d+1}a_i\left(\frac{n}{k}\right)^i\\
&=\sum_{i=0}^{d+1}a_in^i\sum_{k|n}\mu(k)k^{d-i}
\end{aligned}\]
设 \(\displaystyle g(n)=\sum_{k|n}\mu(k)k^{d-i}\),这个函数显然是积性函数,于是有
\(\displaystyle g(n)=\prod_{j=1}^wg(p_j^{\alpha_j})\)
观察 \(g(p^{\alpha})\),发现 \(k\) 只能等于 \(1,p,p^2,p^3\cdots\)
而且仅当 \(k=1\) 或 \(p\) 时 \(\mu\) 不为 \(0\)。所以
\[\begin{aligned}
g(n)
&=\prod_{j=1}^w\mu(1)+\mu(p_j)p_j^{d-i}\\
&=\prod_{j=1}^w1-p_j^{d-i}
\end{aligned}\]
带回去可以得到原式 \(\displaystyle=\sum_{i=0}^{d+1}a_in^i\prod_{j=1}^w1-p_j^{d-i}\),这个式子已经可以 \(\mathcal O(dw)\) 计算。
最终复杂度为 \(\mathcal O(d^3+dw)\) 或 \(\mathcal O(d^2+dw)\)。
BZOJ3309
\[\begin{aligned}
\sum_{i=1}^n\sum_{j=1}^m f(\gcd(i,j))
&=\sum_{d=1}^nf(d)\sum_{i=1}^n\sum_{j=1}^m[\gcd(i,j)=d]\\
&=\sum_{d=1}^nf(d)\sum_{i=1}^{\lfloor\frac{n}{d}\rfloor}\sum_{j=1}^{\lfloor\frac{m}{d}\rfloor}[\gcd(i,j)=1]\\
&=\sum_{d=1}^nf(d)\sum_{k=1}^{\lfloor\frac{n}{d}\rfloor}\left\lfloor\frac{n}{kd}\right\rfloor\left\lfloor\frac{m}{kd}\right\rfloor\mu(k)
\end{aligned}\]
设 \(s=kd\),则
\[\begin{aligned}
\sum_{i=1}^n\sum_{j=1}^m f(\gcd(i,j))
&=\sum_{d=1}^nf(d)\sum_{k=1}^{\lfloor\frac{n}{d}\rfloor}\left\lfloor\frac{n}{s}\right\rfloor\left\lfloor\frac{m}{s}\right\rfloor\mu(k)\\
&=\sum_{s=1}^n\left\lfloor\frac{n}{s}\right\rfloor\left\lfloor\frac{m}{s}\right\rfloor\sum_{d|s}f(d)\mu(\frac{s}{d})
\end{aligned}\]
左边已经可以分块,观察右边的 \(\large\Sigma\):
考虑设 \(\displaystyle s=\prod_{i=1}^wp_i^{k_i}\),由于式子里有个 \(\mu(\dfrac{s}{d})\),因此若设 \(\displaystyle d=\prod_{i=1}^wp_i^{a_i}\),仅当 \(k_i-a_i=0\) 或 \(1\) 时式子才有贡献。
分类讨论:
-
当存在 \((i,j)\) 满足 \(k_i<k_j\) 时,\(a_i\) 的取值显然不会影响到 \(f\) 函数的值,但会影响到 \(\mu\) 函数的值,这两个值正好相反。于是就全部抵消掉了,式子值为 \(0\)。
-
当所有 \(k_i\) 都相等时,设 \(t=\max\{k_i\}\),则 \(f(d)=t\) 对答案的贡献为
\[\begin{aligned}
\sum_{f(\frac{s}{d})=t}f(d)\mu(\frac{s}{d})
&=t\sum_{f(d)=t}\mu(\frac{s}{d})\\
&=t\sum_{i=1}^w(-1)^{w-i}\dbinom{w}{i}\\
&=t(1-1)^w-t(-1)^w\\
&=t(-1)^{w+1}
\end{aligned}\]
当 \(f(d)=t-1\) 时,所有 \(a_i\) 都等于 \(k_i-1\),所以它对答案的贡献为 \((t-1)\times(-1)^w\)。
综合起来,所有 \(k_i\) 都相等时式子值为 \(t(-1)^{w+1}+(t-1)\times(-1)^w=(-1)^{w+1}\)。
接下来随便筛一下就可以 \(\mathcal O(n+T\sqrt n)\) 了。
P3704
求 \(\displaystyle \prod_{i=1}^n\prod_{j=1}^mf_{\gcd(i,j)}\),\(f\) 是斐波那契数列。
\[\begin{aligned}
\prod_{i=1}^n\prod_{j=1}^mf_{\gcd(i,j)}
&=\prod_{d=1}^nf_d^{\sum_{i=1}^n\sum_{j=1}^m[\gcd(i,j)=d]}\\
&=\prod_{d=1}^nf_d^{\sum_{i=1}^{\lfloor\frac{n}{d}\rfloor}\sum_{j=1}^{\lfloor\frac{m}{d}\rfloor}[\gcd(i,j)=1]}\\
&=\prod_{d=1}^nf_d^{\sum_{k=1}^{\lfloor\frac{n}{d}\rfloor}\lfloor\frac{n}{kd}\rfloor\lfloor\frac{m}{kd}\rfloor\mu(k)}
\end{aligned}\]
令 \(s=kd\),则
\[\begin{aligned}
\prod_{i=1}^n\prod_{j=1}^mf_{\gcd(i,j)}
&=\prod_{d=1}^nf_d^{\sum_{k=1}^{\lfloor\frac{n}{d}\rfloor}\lfloor\frac{n}{s}\rfloor\lfloor\frac{m}{s}\rfloor\mu(k)}\\
&=\prod_{s=1}^n\prod_{d|s}f_d^{\lfloor\frac{n}{s}\rfloor\lfloor\frac{m}{s}\rfloor\mu(\frac{s}{d})}\\
&=\prod_{s=1}^n(\prod_{d|s}f_d^{\mu(\frac{s}{d})})^{\lfloor\frac{n}{s}\rfloor\lfloor\frac{m}{s}\rfloor}
\end{aligned}\]
这里你发现括号里的东西与 \(n,m\) 无关,并且可以 \(\mathcal O(n\log n+n\log\text{mod})\) 预处理出来,外面的部分则可以分块。最后算上快速幂,复杂度 \(\mathcal O(n\log n+T\sqrt n\log\text{mod})\)。
P5518
求 \(\displaystyle\prod_{i=1}^A\prod_{j=1}^B\prod_{k=1}^C\left(\frac{\operatorname{lcm}(i,j)}{\gcd(i,k)}\right)^{f(type)}\),其中 \(type\in\{0,1,2\}\),\(f(type)\) 分别等于 \(1,ijk,\gcd(i,j,k)\)。
首先 \(\displaystyle\prod_{i=1}^A\prod_{j=1}^B\prod_{k=1}^C\left(\frac{\operatorname{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)}\)
我们把分子分母分开来算,现在要做的就是计算 \(\displaystyle\prod_{i=1}^A\prod_{j=1}^B\prod_{k=1}^Ci^{f(type)}\) 和 \(\displaystyle\prod_{i=1}^A\prod_{j=1}^B\prod_{k=1}^C\gcd(i,j)^{f(type)}\)。
接下来分 \(type\) 考虑吧。
\(type=0,f(type)=1\)
\[\displaystyle\prod_{i=1}^A\prod_{j=1}^B\prod_{k=1}^Ci
=\prod_{i=1}^Ai^{BC}
=(A!)^{BC}\]
\[\begin{aligned}
\prod_{i=1}^A\prod_{j=1}^B\prod_{k=1}^C\gcd(i,j)
&=\prod_{i=1}^A\prod_{j=1}^B\gcd(i,j)^C
\end{aligned}\]
你会发现 \(\displaystyle\prod_{i=1}^A\prod_{j=1}^B\gcd(i,j)\) 这个式子和我们上一题研究的式子基本上是一样的,它等于
\[\displaystyle\prod_{s=1}^A(\prod_{d|s}d^{\mu(\frac{s}{d})})^{\lfloor\frac{A}{s}\rfloor\lfloor\frac{B}{s}\rfloor}
\]
记住这个式子,它在我们下面的推导中还会用到。
这样我们在 \(\mathcal O(\sqrt n\log n)\) 的时间内解决了 \(type=0\) 的情况。
\(type=1,f(type)=ijk\)
设 \(\displaystyle \Sigma(n)=\sum_{i=1}^ni=\frac{n(n+1)}{2}\)
\[\displaystyle\prod_{i=1}^A\prod_{j=1}^B\prod_{k=1}^Ci^{ijk}=\left(\prod_{i=1}^Ai^i\right)^{\Sigma(B)\Sigma(C)}
\]
\[\begin{aligned}
\prod_{i=1}^A\prod_{j=1}^B\prod_{k=1}^C\gcd(i,j)^{ijk}
&=\left(\prod_{i=1}^A\prod_{j=1}^B\gcd(i,j)^{ij}\right)^{\Sigma(C)}\\
&=\left(\prod_{d=1}^A\prod_{i=1}^{\lfloor\frac{A}{d}\rfloor}\prod_{j=1}^{\lfloor\frac{B}{d}\rfloor}d^{id\times jd[\gcd(i,j)=1]}\right)^{\Sigma(C)}\\
&=\left(\prod_{d=1}^A\prod_{i=1}^{\lfloor\frac{A}{d}\rfloor}\prod_{j=1}^{\lfloor\frac{B}{d}\rfloor}d^{ijd^2\sum_{k|i}\sum_{k|j}\mu(k)}\right)^{\Sigma(C)}\\
&=\left(\prod_{d=1}^A\prod_{k=1}^{\lfloor\frac{A}{d}\rfloor}d^{\mu(k)k^2d^2\Sigma(\lfloor\frac{A}{kd}\rfloor)\Sigma(\lfloor\frac{B}{kd}\rfloor)}\right)^{\Sigma(C)}
\end{aligned}\]
令 \(s=kd\),则
\[\begin{aligned}
\prod_{i=1}^A\prod_{j=1}^B\prod_{k=1}^C\gcd(i,j)^{ijk}
&=\left(\prod_{d=1}^A\prod_{k=1}^{\lfloor\frac{A}{d}\rfloor}d^{\mu(k)s^2\Sigma(\lfloor\frac{A}{s}\rfloor)\Sigma(\lfloor\frac{B}{s}\rfloor)}\right)^{\Sigma(C)}\\
&=\left(\prod_{s=1}^A\left(\prod_{d|s}d^{\mu(\frac{s}{d})}\right)^{s^2\Sigma(\lfloor\frac{A}{s}\rfloor)\Sigma(\lfloor\frac{B}{s}\rfloor)}\right)^{\Sigma(C)}\\
\end{aligned}\]
中间括号内的式子我们是预处理过的,这里再预处理它的 \(s^2\) 次幂就好了。
分一次块,复杂度 \(\mathcal O(\sqrt n\log n)\)。
\(type=2,f(type)=\gcd(i,j,k)\)
阴间task
前置知识:欧拉反演
我们知道 \(\displaystyle n=\sum_{d|n}\varphi(d)\)
把 \(n\) 换掉,于是 \(\displaystyle\gcd(i,j)=\sum_{d|\gcd(i,j)}\varphi(d)=\sum_{d|i}\sum_{d|j}\varphi(d)\)
那么 \(\displaystyle\sum_{i=1}^n\gcd(i,x)=\sum_{i=1}^n\sum_{d|i}\sum_{d|x}\varphi(d)=\sum_{d|x}\sum_{i=1}^n\sum_{d|i}\varphi(d)=\sum_{d|x}\left\lfloor\frac{n}{d}\right\rfloor\varphi(d)\)
上式被称为欧拉反演。
\[\displaystyle\prod_{i=1}^A\prod_{j=1}^B\prod_{k=1}^Ci^{\gcd(i,j,k)}=\prod_{i=1}^Ai^{\sum_{j=1}^B\sum_{k=1}^C\gcd(k,\gcd(i,j))}
\]
最右边可以欧拉反演,于是
\[\begin{aligned}
\prod_{i=1}^A\prod_{j=1}^B\prod_{k=1}^Ci^{\gcd(i,j,k)}
&=\prod_{i=1}^Ai^{\sum_{j=1}^B\sum_{d|i}\sum_{d|j}\lfloor\frac{C}{d}\rfloor\varphi(d)}\\
&=\prod_{i=1}^Ai^{\sum_{d|i}\sum_{j=1}^B\sum_{d|j}\lfloor\frac{C}{d}\rfloor\varphi(d)}\\
&=\prod_{i=1}^Ai^{\sum_{d|i}\lfloor\frac{B}{d}\rfloor\lfloor\frac{C}{d}\rfloor\varphi(d)}\\
&=\prod_{d=1}^A\left(\prod_{i=1}^{\lfloor\frac{A}{d}\rfloor}id\right)^{\lfloor\frac{B}{d}\rfloor\lfloor\frac{C}{d}\rfloor\varphi(d)}\\
&=\prod_{d=1}^A\left(d^{\lfloor\frac{A}{d}\rfloor}\left\lfloor\frac{A}{d}\right\rfloor!\right)^{\lfloor\frac{B}{d}\rfloor\lfloor\frac{C}{d}\rfloor\varphi(d)}
\end{aligned}\]
预处理 \(d^{\varphi(d)}\) 前缀积再做一次分块即可 \(\mathcal O(\sqrt n\log n)\)。
接下来设 \(\displaystyle G(n,x)=\sum_{i=1}^n\gcd(i,x)=\sum_{d|x}\left\lfloor\frac{n}{d}\right\rfloor\varphi(d)\)。
\[\begin{aligned}
\prod_{i=1}^A\prod_{j=1}^B\prod_{k=1}^C\gcd(i,j)^{\gcd(i,j,k)}
&=\prod_{i=1}^A\prod_{j=1}^B\gcd(i,j)^{\sum_{k=1}^C\gcd(\gcd(i,j),k)}\\
&=\prod_{i=1}^A\prod_{j=1}^B\gcd(i,j)^{G(C,\gcd(i,j))}\\
&=\prod_{d=1}^Ad^{G(C,d)\sum_{i=1}^{\lfloor\frac{A}{d}\rfloor}\sum_{j=1}^{\lfloor\frac{B}{d}\rfloor}[\gcd(i,j)=1]}\\
&=\prod_{d=1}^Ad^{\sum_{q|d}\lfloor\frac{C}{q}\rfloor\varphi(q)\sum_{k=1}^{\lfloor\frac{A}{d}\rfloor}\lfloor\frac{A}{kd}\rfloor\lfloor\frac{B}{kd}\rfloor\mu(k)}\\
&=\prod_{q=1}^A\prod_{d=1}^{\lfloor\frac{A}{q}\rfloor}(dq)^{\lfloor\frac{C}{q}\rfloor\varphi(q)\sum_{k=1}^{\lfloor\frac{A}{dq}\rfloor}\lfloor\frac{A}{kdq}\rfloor\lfloor\frac{B}{kdq}\rfloor\mu(k)}\\
\end{aligned}\]
考虑 \(d,q\) 分开计算。
令 \(s=kd\),则
\[\begin{aligned}
\prod_{q=1}^A\prod_{d=1}^{\lfloor\frac{A}{q}\rfloor}d^{\lfloor\frac{C}{q}\rfloor\varphi(q)\sum_{k=1}^{\lfloor\frac{A}{dq}\rfloor}\lfloor\frac{A}{kdq}\rfloor\lfloor\frac{B}{kdq}\rfloor\mu(k)}
&=\prod_{q=1}^A\prod_{d=1}^{\lfloor\frac{A}{q}\rfloor}d^{\lfloor\frac{C}{q}\rfloor\lfloor\frac{A}{sq}\rfloor\lfloor\frac{B}{sq}\rfloor\varphi(q)\sum_{k=1}^{\lfloor\frac{A}{dq}\rfloor}\mu(k)}\\
&=\prod_{q=1}^A\left(\prod_{s=1}^{\lfloor\frac{A}{q}\rfloor}\left(\prod_{d|s}d^{\mu(\frac{s}{d})}\right)^{\lfloor\frac{A}{sq}\rfloor\lfloor\frac{B}{sq}\rfloor}\right)^{\varphi(q)\lfloor\frac{C}{q}\rfloor}\\
\end{aligned}\]
你惊奇地发现最外层括号里面的东西我们在 \(type=0\) 时研究过了。
这样外层一次分块,里层一次分块就完事了。
复杂度 \(\displaystyle\sum_{i=1}^{\sqrt n}\sqrt\frac{n}{i}\log\frac{n}{i}=\mathcal O(n^{\frac{3}{4}}\log n)\)。
还有 \(q\),同样令 \(s=kd\):
\[\begin{aligned}
\prod_{q=1}^A\prod_{d=1}^{\lfloor\frac{A}{q}\rfloor}q^{\lfloor\frac{C}{q}\rfloor\varphi(q)\sum_{k=1}^{\lfloor\frac{A}{dq}\rfloor}\lfloor\frac{A}{kdq}\rfloor\lfloor\frac{B}{kdq}\rfloor\mu(k)}
&=\prod_{q=1}^Aq^{\lfloor\frac{C}{q}\rfloor\varphi(q)\sum_{s=1}^{\lfloor\frac{A}{q}\rfloor}\lfloor\frac{A}{sq}\rfloor\lfloor\frac{B}{sq}\rfloor\sum_{k|s}\mu(k)}\\
&=\prod_{q=1}^Aq^{\lfloor\frac{C}{q}\rfloor\varphi(q)\sum_{s=1}^{\lfloor\frac{A}{q}\rfloor}\lfloor\frac{A}{sq}\rfloor\lfloor\frac{B}{sq}\rfloor[s=1]}\\
&=\prod_{q=1}^Aq^{\lfloor\frac{A}{q}\rfloor\lfloor\frac{B}{q}\rfloor\lfloor\frac{C}{q}\rfloor\varphi(q)}\\
\end{aligned}\]
一次分块即可,复杂度 \(\mathcal O(\sqrt n\log n)\)。
\(\large\mathbf V\)
感谢 \(\texttt{cyffff}\) 神仙对我的文章的支持。本文中的部分推导和例题来自他的文章。
感谢 \(\texttt{An_account}\) 大佬,他的文章是一篇很好的入门文章,引领了我踏入莫反的大门。
本文中的部分思路借鉴自题解区的文章。感谢这些文章的作者们。
本文可能随时作出修改,希望各位积极提出修改意见。