mobius-inversion-formula

Möbius inversion formula

本文中,约定 \(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\) 筛了两遍,所以应该加回来一遍。

于是,我们现在需要这个一个函数:

  • 对于含完全平方因子的数,返回值为 \(0\)

  • 对于质因子个数为奇数的数,返回值为 \(-1\)

  • 对于质因子个数为偶数的数,返回值为 \(1\)

显然这个函数就是 \(\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}\) 大佬,他的文章是一篇很好的入门文章,引领了我踏入莫反的大门。

本文中的部分思路借鉴自题解区的文章。感谢这些文章的作者们。

本文可能随时作出修改,希望各位积极提出修改意见。

posted @ 2024-02-29 07:56  iorit  阅读(67)  评论(0)    收藏  举报