莫比乌斯反演
数论分块
下取整的结合律
证明:设 \(\lfloor \frac ab\rfloor=k\),\(a=bk+r\),显然有 \(0\leq r<b\)。则:
同理,上取整也具有结合律。
数论分块结论
首先一个比较重要的事情是,在 \(n\geq d\) 时,\(\lfloor \frac nd\rfloor\) 不同的值不超过 \(2\sqrt n\) 种。
然后,使得式子 \(\lfloor\frac ni\rfloor=\lfloor\frac nj\rfloor\),且满足 \(i\leq j\leq n\) 的 \(j\) 最大是 \(\lfloor\frac{n}{\lfloor \frac ni\rfloor}\rfloor\)。也即下标 \(i\) 所在块的右端点是 \(\lfloor\frac{n}{\lfloor \frac ni\rfloor}\rfloor\)。(此处需要 \(\lfloor \frac ni\rfloor\neq 0\))
充分性:令 \(k=\lfloor\frac ni\rfloor\),则要证 \(k=\lfloor\frac{n}{\lfloor \frac nk\rfloor}\rfloor\),不妨设 \(n=kx+c=ik+b\),此时有 \(c<k\) 且 \(b<i\),\(x=\lfloor \frac nk\rfloor\)。由于 \(c<k\),故 \((x+1)k>ik+b\),也即 \(x\geq i\),也即 \(c\leq b<i\leq x\),故 \(c<x\) 成立。故 \(\lfloor\frac{kx+c}{x}\rfloor=k\),得证。
必要性:对于任意一个数 \(x\),若其满足 \(\lfloor\frac nx\rfloor=k\),不妨设 \(n=xk+r\),则 \(xk\le n\),故 \(x\) 的最大值不超过 \(\frac nk=\lfloor\frac{n}{\lfloor \frac ni\rfloor}\rfloor\)。
对于求和式 \(\sum_{i=1}^n f(i)\lfloor\frac ni\rfloor\),我们可以求出 \(f\) 的前缀和,对于 \(\sqrt n\) 个下取整的值分别计算。复杂度 \(O(\sqrt n)\)。
多个下取整乘积形式的数论分块
考察 \(\sum_{i=1}^n f(i)\prod_{j=1}^m \lfloor\frac {a_m}i\rfloor\),等价于把多个块边界取交集。每一块的右端点是对 \(m\) 维的每一维分别求右端点后取 \(\min\) 的结果,复杂度 \(O(m\sqrt n)\),这里 \(m\) 通常很小。
莫比乌斯反演
莫比乌斯函数
设 \(n=p_1^{a_1}\dots p_2^{a_k}\),定义莫比乌斯函数 \(\mu(n)\) 在 \(n=1\) 时取 \(1\),在 \(\max a=1\) 时取 \((-1)^k\),否则取 \(0\)。同时设函数 \(e(n)=[n=1]\),其中中括号为艾弗森括号。
我们有一个关键引理 \(\sum_{d\mid n} \mu(d)=e(n)\),它在 \(n=1\) 时显然成立,下面考察 \(n>1\) 的情况。不妨设 \(d=p_1^{b_1}\dots p_k^{b_k}\),其中 \(b_i\in[0,a_i]\)。
此时可以得到一个重要结论:
正确性显然。
数论函数的变换环
对于数论函数(定义在正整数集上的实值或复值函数),作如下运算定义和分析:
- 加法:\(f+g(x)=f(x)+g(x)\)
- 狄利克雷卷积:\(f*g(x)=\sum_{d_1d_2=x}f(d_1)g(d_2)=\sum_{d\mid x}f(d)g(\frac nd)\)。
- 狄利克雷卷积对加法有分配律,证明显然。
- 狄利克雷卷积有结合律,因为任意运算顺序的结果都是 \(\sum_{d_1d_2d_3=x}f(d_1)g(d_2)h(d_3)\)。
因此数论函数依照加法和狄利克雷卷积形成变换环,注意到其卷积单位元为上述的 \(e(n)\),代入即可证明。
莫比乌斯反演公式
证明:令常值函数 \(I(x)=1\),则左式等价于 \(f=g*I\),右式等价于 \(g=\mu * f\)。
又 \(\mu * I=\sum_{d\mid n} \mu(d)=e(n)\)(根据式子 \((12)\) 可得),因此有 \(\mu *f=\mu *g*I=g\),反过来同理。
一个等价形式是:
利用莫反求 \(\varphi\) 计算公式
对于固定的 \(n\),考察分数集合 \(S=\{\frac mn|m\in[1,n]\}\),考虑给每个分数约分,显然有 \(|S|=\sum_{d\mid n}|\{\frac cd|c\in[1,d],\gcd(c,d)=1\}|\)。右侧集合的大小显然是 \(\varphi (d)\),因此可得出下面的推导:
接下来的部分是容易的,不再赘述。进一步考虑 \(\varphi\) 与 \(\mu\) 的关系。注意到上面的 \((4)\) 式子可以写成狄利克雷卷积形式(下文中 \(I\) 是常值函数 \(1\),\(id\) 是自映射函数 \(id(x)=x\)):
此时有欧拉反演的推论:
可以通过枚举 \(\gcd\) 的值进行莫反,然后利用 \((5)\) 得到。
P2522 [HAOI2011] Problem b
题意:\(n\) 次询问,求 \(\sum_{i=a}^b\sum_{j=c}^d[\gcd(i,j)=k]\)。\(n,a,b,c,d\leq 5\times 10^4\)。
差分,做成 \(4\) 个形如 \(\sum_{i=1}^a\sum_{j=1}^b[\gcd(i,j)=k]\) 的形式。可以做出如下化简:
预处理 \(\mu\),利用多维度的数论分块即可做到 \(O(T\sqrt n)\)。
P2257 YY的GCD
题意:\(T\) 次询问,求 \(\sum_{i=1}^a\sum_{j=1}^b[\gcd(i,j)是质数]\)。\(T\leq 10^4\),\(a,b\leq 10^7\)。
设 \(f(x)=\sum_p\mu(\frac xp)\),数论分块即可。注意 \(f(x)\) 可以在线性筛时预处理得到:
- 若 \(x=1\),则 \(f(x)=0\)。
- 若 \(x\) 是质数,则 \(f(x)=\mu(1)=1\)。
- 否则在线性筛时找到 \(x\) 的最小质因子 \(j\),设 \(x=i\times j\):
- 若 \(i,j\) 互质,则 \(i\) 中每一个 \(\mu\) 的值都会增加一个未出现过的质因子,即 \(f(x)=-f(i)+\mu(i)\)。
- 否则,对于除 \(j\) 外的所有质因子 \(p\),都有 \(\mu(\frac xp)\) 有平方因子。即 \(f(x)=\mu (i)\)。
总复杂度 \(O(a+T\sqrt a)\)。
P1829 [国家集训队] Crash的数字表格 / JZPTAB
题意:单次询问,求 \(\sum_{i=1}^n\sum_{j=1}^m \operatorname{lcm}(i,j)\)。\(n,m\leq 10^7\)。
把 \((i,j)\) 的部分提出来单独处理,设成 \(f(i,j)\)。
处理 \(\mu(d)\times d^2\) 的前缀和,后半部分整除分块,每次可以 \(O(1)\) 利用等差数列求和计算。因此一个 \(f\) 的复杂度是 \(O(\sqrt n)\)。
仍然整除分块做。总复杂度是 \(O(n)\)。另一种计算方式见下面的 AGC038C
P3704 [SDOI2017] 数字表格
题意:\(T\) 次询问,每次给定 \(n,m\),求 \(\prod_{i=1}^n\prod_{j=1}^m f_{\gcd(i,j)}\) 的值。其中 \(f\) 是斐波那契数列。\(n,m\leq 10^6\),\(T\leq 10^3\)。
仍然考虑枚举 gcd:
预处理斐波那契数列及其逆元,不妨设 \(g_t=\prod_df_{\frac td}^{\mu(d)}\),由于有效的 \(\mu(d)=\pm1\),故可以在 \(O(n\log n)\) 的时间复杂度预处理出每一个 \(g_t\) 的值。维护 \(g_t\) 的前缀积,外层数论分块做即可,每一块会带一个快速幂的 \(\log\)。显然这个前缀积里不可能出现 \(0\)。
总复杂度 \(O(n\log n+T\sqrt n\log n)\)。
P3327 [SDOI2015] 约数个数和
题意:设 \(d(x)\) 表示 \(x\) 的因数个数。\(T\) 次询问,每次询问给定 \(n,m\),求 \(\sum_{i=1}^n\sum_{j=1}^md(i\times j)\)。\(T,n,m\leq 50000\)。
定理:\(d(i\times j)=\sum_{x\mid i}\sum_{y\mid j}[\gcd(x,y)=1]\)。
证明:对于每种质因数分别考虑,设其在 \(i\) 中的次数为 \(a\),在 \(j\) 中的次数为 \(b\),则其会给因子数目贡献一个 \(a+b+1\) 的因子。考虑另一种有 \(a+b+1\) 的贡献的形式:\((0,0),(0,1),\dots,(0,b),(1,0),(2,0),\dots,(a,0)\),表示最终因子里这个质因数的来源,共有 \(a+b+1\) 个不同的 pair。这反应到两边各选一个因子统计答案的过程中,就是要求两边选出来的因子互质。因此结论得证。
设 \(f(x)=\sum_{i=1}^x\lfloor\frac {x}{i}\rfloor\),利用整除分块不难预处理出每一个 \(f\) 的值。此时 \(ans=\sum_d\mu(d)\times f(\lfloor\frac nd\rfloor)\times f(\lfloor\frac md\rfloor)\),再加一个整除分块即可求得 \(ans\) 的值。总复杂度 \(O((n+T)\sqrt n)\)。
CF235E Number Challenge
题意:求 \(\sum_{i=1}^a\sum_{j=1}^b\sum_{k=1}^cd(i\times j\times k)\)。\(a,b,c\le 2000\)。
借用上题结论,我们类似地有 \(d(ijk)=\sum_{x\mid i}\sum_{y\mid j}\sum_{z\mid k}[\gcd(x,y)=1][\gcd(x,z)=1][\gcd(y,z)=1]\)。
下面显然要对这一些 \(\gcd\) 做莫反。但是对三个一起莫反得到的形式可能会很复杂,且该题存在枚举空间。因此我们尝试对某一个进行莫反,下面选取的是 \([\gcd(x,y)=1]\) 这一项。
不妨设 \(n=\max(a,b,c)\),此时外面两层枚举复杂度为 \(O(n^2)\),内层的两个求和式可以分别计算再相乘,\(x,y\) 的枚举都是调和级数。因此预处理 \(2000\) 以内两两数的 gcd 即可做到 \(O(n^2\ln n)\)。
[AGC038C] LCMs
题意:给定一个长度为 \(n\) 的数列 \(A_1, A_2, A_3, \ldots, A_n\)。请你求出 \(\sum_{i=1}^{n}\sum_{j=i+1}^{n}\mathrm{lcm}(A_i,A_j)\) 的值模 \(998244353\) 的结果。\(1 \leq n \leq 2 \times 10^5\),\(1 \leq A_i \leq 10^6\)。
首先可以通过简单变化变为求 \(\sum_{i=1}^n\sum_{j=1}^n\mathrm{lcm}(a_i,a_j)\)。
【法一】
由于值域不大,可以用一个桶 \(c_i\) 表示 \(i\) 的出现次数,于是可以变为 \(\sum_{i=1}^{v}\sum_{j=1}^v\mathrm{lcm}(i,j)\times c_i\times c_j\)。下面略去一些常见的化简。
后一个求和符号枚举 \(d\) 对全局预处理;前一个求和符号暴力枚举 \(i\) 算,复杂度是调和级数。
【法二】:直接利用广义公式
首先有如下化简结果:
考虑处理中间那个 \(\gcd=k\),一般我们可以尝试反演,找 \(k\) 的因数 \(d\),使得限制变为 \(d\) 同时是 \(a_i,a_j\) 的因数,消去 \(\gcd\)。具体地,我们设 \(f(x)=\sum_{i=1}^n\sum_{j=1}^n[\gcd (a_i,a_j)=k]\times a_ia_j\),构造一个函数 \(g\) 进行莫比乌斯反演:
也即 \(g(d)\) 是所有权值为自己倍数的数的和的平方。开桶存值不难做到 \(O(V\log V)\) 求所有 \(g\)。下面反演回来求 \(f\):
调和级数暴力求即可,复杂度 \(O(V\log V)\)。

浙公网安备 33010602011771号