专栏文章

莫比乌斯反演总结

算法·理论参与者 9已保存评论 8

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
8 条
当前快照
1 份
快照标识符
@mklexjpo
此快照首次捕获于
2026/01/20 01:02
上个月
此快照最后确认于
2026/02/19 01:16
14 小时前
查看原文

莫比乌斯×狄利克雷

很早以前的总结了……
今天比较特别,发表纪念一下。

前情提要

需要掌握

  1. μ\mu 的定义及求法。
  2. 大型运算符交换顺序。

引入

定义

  1. nN\forall n\in N^* ,一定有 n=i=1qpiain=\prod\limits_{i=1}^qp_i^{a_i}
    对此定义 μ(n)={0n含平方因子(1)qotherwise\mu(n)=\begin{cases}0&n 含平方因子\\(-1)^q&otherwise\end{cases}
  2. 定义元函数 ϵ(n)=[n=1]={1n=10n1\epsilon(n)=[n=1]=\begin{cases}1&n=1\\0&n\not=1\end{cases}
  3. Idk(x)=xk\mathrm{Id}_k(x)=x^k

公式

  1. ijk=ijk\left\lfloor{\left\lfloor{i\over j}\right\rfloor\over k}\right\rfloor=\left\lfloor{i\over jk}\right\rfloor

积性函数

gcd(x,y)=1\gcd(x,y)=1 时,有 f(xy)=f(x)f(y)f(xy)=f(x)f(y),则称 ff 是一个积性函数,
f,gf,g 为积性函数,则 h(i)=f(i)g(i)h(i)=f(i)g(i) 也为积性函数(不同于狄利克雷卷积)。

积性函数的线性递推

若函数 ff 为积性函数,那么一定可以按下面的方法转移。
P(n)P(n)nn 中最小质因子,A(n)A(n)nn 中最小质因子的次数,定义 PA(n)=P(n)A(n)\mathrm{PA}(n)=P(n)^{A(n)}
f(n)={1n=1g(n)n1n=PA(n)f(PA(n))f(nPA(n))n1nPA(n)f(n)=\begin{cases}1&n=1\\g(n)&n\not=1 \land n=\mathrm{PA}(n)\\f(\mathrm{PA}(n))f({n\over \mathrm{PA}(n)})&n\not=1 \land n\not=\mathrm{PA}(n)\end{cases}
这时,我们只需要处理 g(n)g(n) 即可,
其余可以用线性筛(欧拉筛)来 O(n)O(n) 解决!

简介

莫比乌斯

莫比乌斯函数

μ(x)\mu(x)
简洁的容斥系数,适用于:倍数容斥。

莫比乌斯反演

T(f)(n)=dnf(d),R(f)(n)=dnμ(nd)f(d)T(f)(n)=\sum_{d|n} f(d),R(f)(n)=\sum_{d|n} \mu\left({n\over d}\right) f(d)
用于化简式子(不常直接用)。

莫比乌斯的性质

ϵ(x)=dxμ(d)\epsilon(x)=\sum_{d|x} \mu(d)
用于化简式子(常用)。
证明:
n=i=1qpiain=\prod\limits_{i=1}^qp_i^{a_i} ,而 μ(d)0\mu(d)\not=0dd 当且仅当他的质因子指数 1\leq 1
所以 nn 的每个质因子都有两种取法,而 μ(d)\mu(d) 就是(1)指数取1的个数(-1)^{指数取 1 的个数}
根据二项式定理,当 n>1n>1 时,奇数项的系数等于偶数项的系数,因此得证。

狄利克雷

狄利克雷卷积

h=fgh(x)=dxf(d)g(xd)h=f*g\Leftrightarrow h(x)=\sum_{d|x} f(d)g\left({x\over d}\right)
f,gf,g 为积性函数,则 hh 为积性函数。

狄利克雷卷积的性质

做以下定义:
Idk(x)=xk\mathrm{Id}_k(x)=x^k
有性质:
  1. 交换律:fg=gff*g=g*f
  2. 结合律:(fg)h=f(gh)(f*g)*h=f*(g*h)
  3. 分配率:f(g+h)=fg+fhf*(g+h)=f*g+f*h
  4. 单位元:ϵf=f\epsilon*f=f
  5. 逆元:若 fg=ϵf*g=\epsilon ,那么称 ffgg 互为逆元,即 f=g1,g=f1f=g^{-1},g=f^{-1}
  6. ffgg 为积性函数,则 fgf*g 也为积性函数,f1f^{-1} 也是积性函数。
  7. fg=hf*g=h,则 IdkfIdkg=Idkh\mathrm{Id}_kf*\mathrm{Id}_kg=\mathrm{Id}_kh
    证明如下: IdkfIdkg(n)=dnf(d)g(nd)Idk(d)Idk(nd)=dnf(d)g(nd)Idk(dnd)=Idk(n)dnf(d)g(nd)=Idk(n)h(n)\begin{aligned}&\mathrm{Id}_kf*\mathrm{Id}_kg(n)\\=&\sum\limits_{d|n} f(d)g({n\over d})\mathrm{Id}_k(d)\mathrm{Id}_k({n\over d})\\=&\sum\limits_{d|n} f(d)g({n\over d})\mathrm{Id}_k(d{n\over d})\\=&\mathrm{Id}_k(n)\sum\limits_{d|n} f(d)g({n\over d})\\=&\mathrm{Id}_k(n)h(n)\end{aligned}
  8. 特别地,当 h(n)=dnf(d)g(d)h(n)=\sum\limits_{d|n}f(d)g(d) ,若 ffgg 为积性函数,hh 也为积性函数,证明如下:
    c(d)=f(d)g(d)c(d)=f(d)g(d) ,因为 ffgg 为积性函数,所以直积后仍为积性函数,
    h(n)=dnc(d)=cId0h(n)=\sum\limits_{d|n}c(d)=c*\mathrm{Id}_0,所以 hh 也为积性函数。

莫比乌斯×狄利克雷

这里对于函数 ff 定义:
T(f)=fId0,R(f)=fμT(f)=f*\mathrm{Id}_0,R(f)=f*\mu
满足:
T(R(f))=R(T(f))=fT(R(f))=R(T(f))=f

常见形式与例子

看不懂的,配套下文的技巧观看。

模板 11:函数套 gcd\gcd

关于形如 i=1nj=1mf(gcd(i,j))\sum_{i=1}^{n} \sum_{j=1}^{m} f\left(\gcd\left(i,j\right)\right) 的模板解法:
i=1nj=1mf(gcd(i,j))原式=d=1min{n,m}f(d)i=1ndj=1md[gcd(i,j)=1]枚举gcd的结果d=d=1min{n,m}f(d)i=1ndj=1mdkikjμ(k)莫比乌斯函数的性质=d=1min{n,m}f(d)k=1min{nd,md}μ(k)i=1nkdj=1mkd1交换大型运算符位置=d=1min{n,m}f(d)k=1min{nd,md}μ(k)nkdmkd易得=t=1min{n,m}ktf(tk)μ(k)ntmt换元令t=kd=t=1min{n,m}ntmtktf(tk)μ(k)\begin{aligned} &\sum_{i=1}^{n} \sum_{j=1}^{m} f\left(\gcd\left(i,j\right)\right) & 原式\\ =&\sum_{d=1}^{\min\left\{n,m\right\}}f(d) \sum_{i=1}^{\left\lfloor {n\over d}\right\rfloor} \sum_{j=1}^{\left\lfloor {m\over d}\right\rfloor}\left[\gcd\left(i,j\right)=1\right] & 枚举 \gcd 的结果 d\\ =&\sum_{d=1}^{\min\left\{n,m\right\}}f(d) \sum_{i=1}^{\left\lfloor {n\over d}\right\rfloor} \sum_{j=1}^{\left\lfloor {m\over d}\right\rfloor} \sum_{k|i\land k|j} \mu\left(k\right) & 莫比乌斯函数的性质\\ =&\sum_{d=1}^{\min\left\{n,m\right\}}f(d) \sum_{k=1}^{\min\left\{\left\lfloor {n\over d}\right\rfloor,\left\lfloor {m\over d}\right\rfloor\right\}}\mu\left(k\right) \sum_{i=1}^{\left\lfloor {n\over kd}\right\rfloor} \sum_{j=1}^{\left\lfloor {m\over kd}\right\rfloor} 1 & 交换大型运算符位置\\ =&\sum_{d=1}^{\min\left\{n,m\right\}}f(d) \sum_{k=1}^{\min\left\{\left\lfloor {n\over d}\right\rfloor,\left\lfloor {m\over d}\right\rfloor\right\}}\mu\left(k\right) \left\lfloor {n\over kd}\right\rfloor \left\lfloor {m\over kd}\right\rfloor & 易得\\ =&\sum_{t=1}^{\min\left\{n,m\right\}} \sum_{k|t}f\left({t\over k}\right)\mu\left(k\right) \left\lfloor {n\over t}\right\rfloor \left\lfloor {m\over t}\right\rfloor & 换元令 t=kd\\ =&\sum_{t=1}^{\min\left\{n,m\right\}} \left\lfloor {n\over t}\right\rfloor \left\lfloor {m\over t}\right\rfloor \sum_{k|t}f\left({t\over k}\right)\mu\left(k\right) \end{aligned}
还没有结束,最后一步是尝试证明 g(t)=ktf(tk)μ(k)g(t)=\sum\limits_{k|t}f\left({t\over k}\right)\mu\left(k\right) 是一个积性函数。
(这是狄利克雷卷积,可以只证明 ff 的积性,得到 gg 的积性)
无论是否证得 gg 是否具有积性,
只要可以快速预处理 gg 即可。
然后求 gg 的前缀和 s(t)=i=1tg(i)s(t)=\sum\limits_{i=1}^{t} g(i)
求答案使用整数分块。
例题:
对于 n,m107n,m \le 10^7T104T \le 10^4。求有多少对正整数 (x,y)(x,y) 满足 xnymx \le n \wedge y \le m,使得 gcd(x,y)\gcd(x,y) 是一个质数。

模板 22:函数乘函数乘函数套 gcd\gcd

关于形如 i=1nj=1mg(i)h(j)f(gcd(i,j))\sum_{i=1}^{n} \sum_{j=1}^{m} g(i)h(j)f\left(\gcd\left(i,j\right)\right) 的模板解法:
i=1nj=1mg(i)h(j)f(gcd(i,j))原式=d=1min{n,m}f(d)i=1ndg(i)j=1mdh(j)[gcd(i,j)=1]枚举gcd的结果d=d=1min{n,m}f(d)i=1ndg(i)j=1mdh(j)kikjμ(k)莫比乌斯函数的性质=d=1min{n,m}f(d)k=1min{nd,md}μ(k)i=1nkdh(i)j=1mkdg(j)交换大型运算符位置=t=1min{n,m}ktf(tk)μ(k)i=1nth(i)j=1mtg(j)换元令t=kd=t=1min{n,m}i=1nth(i)j=1mtg(j)ktf(tk)μ(k)\begin{aligned} &\sum_{i=1}^{n} \sum_{j=1}^{m} g(i)h(j)f\left(\gcd\left(i,j\right)\right) & 原式\\ =&\sum_{d=1}^{\min\left\{n,m\right\}}f(d) \sum_{i=1}^{\left\lfloor {n\over d}\right\rfloor} g(i) \sum_{j=1}^{\left\lfloor {m\over d}\right\rfloor} h(j) \left[\gcd\left(i,j\right)=1\right] & 枚举 \gcd 的结果 d\\ =&\sum_{d=1}^{\min\left\{n,m\right\}}f(d) \sum_{i=1}^{\left\lfloor {n\over d}\right\rfloor}g(i) \sum_{j=1}^{\left\lfloor {m\over d}\right\rfloor}h(j) \sum_{k|i\land k|j} \mu\left(k\right) & 莫比乌斯函数的性质\\ =&\sum_{d=1}^{\min\left\{n,m\right\}}f(d) \sum_{k=1}^{\min\left\{\left\lfloor {n\over d}\right\rfloor,\left\lfloor {m\over d}\right\rfloor\right\}}\mu\left(k\right) \sum_{i=1}^{\left\lfloor {n\over kd}\right\rfloor} h(i) \sum_{j=1}^{\left\lfloor {m\over kd}\right\rfloor} g(j) & 交换大型运算符位置\\ =&\sum_{t=1}^{\min\left\{n,m\right\}} \sum_{k|t}f\left({t\over k}\right)\mu\left(k\right) \sum_{i=1}^{\left\lfloor {n\over t}\right\rfloor} h(i) \sum_{j=1}^{\left\lfloor {m\over t}\right\rfloor} g(j) & 换元令 t=kd\\ =&\sum_{t=1}^{\min\left\{n,m\right\}} \sum_{i=1}^{\left\lfloor {n\over t}\right\rfloor} h(i) \sum_{j=1}^{\left\lfloor {m\over t}\right\rfloor} g(j) \sum_{k|t}f\left({t\over k}\right)\mu\left(k\right) \end{aligned}
后三个求和只有公共项 tt,可以按 tt 分别预处理。
例题: 对于 T104T \le 10^4n,m107n,m \le 10^7,求:
i=1nj=1mlcm(i,j)\sum_{i=1}^n{\sum_{j=1}^{m}\mathrm{lcm}(i,j)}

模板 33:多要求

终极模板:见招拆招\color{purple}{终极模板:见招拆招}
关于形如 i[1..n],1biaif(gcdk[1..n]bk)j=1ngj(bj)\sum\limits_{\forall i\in[1..n],1\le b_i \le a_i} f(\gcd\limits_{k\in[1..n]} b_k) \prod\limits_{j=1}^{n} g_j(b_j) 的模板解法,
这并不好直接表示出来,但是推法几乎一样。
所以,只给出结论:
t=1minl=1nal(ktf(tk)μ(k))p=1ni=1aptgp(i)\begin{aligned} \sum_{t=1}^{\min\limits_{l=1}^{n}{a_l}}\left(\sum_{k|t}f\left({t\over k}\right)\mu\left(k\right)\right)\prod\limits_{p=1}^{n}\sum_{i=1}^{\left\lfloor {a_p\over t} \right\rfloor} g_p(i) \end{aligned}

模板 44gcd\gcd 乘积

关于形如 i=1nj=1mf(gcd(i,j))\prod\limits_{i=1}^{n}\prod\limits_{j=1}^{m}f(\gcd(i,j)) 的暴力解(不使用 ln\lnexp\exp)模板:
i=1nj=1mf(gcd(i,j))=d=1min{n,m}f(d)i=1ndj=1md[gcd(i,j)=1]=d=1min{n,m}f(d)i=1ndj=1mdkikjμ(k)=d=1min{n,m}f(d)k=1min{ndmd}μ(k)nkdmkd=t=1min{n,m}dtf(d)μ(td)ntmt=t=1min{n,m}(dtf(d)μ(td))ntmt\begin{aligned} &\prod\limits_{i=1}^{n}\prod\limits_{j=1}^{m}f(\gcd(i,j))\\ =&\prod_{d=1}^{\min\{n,m\}} f(d)^{ \sum\limits_{i=1}^{\left\lfloor{n\over d}\right\rfloor} \sum\limits_{j=1}^{\left\lfloor{m\over d}\right\rfloor} [\gcd(i,j)=1] }\\ =&\prod_{d=1}^{\min\{n,m\}} f(d)^{ \sum\limits_{i=1}^{\left\lfloor{n\over d}\right\rfloor} \sum\limits_{j=1}^{\left\lfloor{m\over d}\right\rfloor} \sum\limits_{k|i\land k|j} \mu(k) }\\ =&\prod_{d=1}^{\min\{n,m\}} f(d)^{ \sum\limits_{k=1}^{\min\left\{ \left\lfloor{n\over d}\right\rfloor \left\lfloor{m\over d}\right\rfloor \right\}} \mu(k) \left\lfloor{n\over kd}\right\rfloor \left\lfloor{m\over kd}\right\rfloor }\\ =& \prod_{t=1}^{\min\{n,m\}} \prod_{d|t} f(d)^{ \mu({t\over d}) \left\lfloor{n\over t}\right\rfloor \left\lfloor{m\over t}\right\rfloor }\\ =& \prod_{t=1}^{\min\{n,m\}} \left(\prod_{d|t} f(d)^{ \mu({t\over d}) }\right) ^{ \left\lfloor{n\over t}\right\rfloor \left\lfloor{m\over t}\right\rfloor } \end{aligned}

求解技巧

技巧 11:枚举答案

以模板 11 为例:
i=1nj=1mf(gcd(i,j))=d=1min{n,m}f(d)i=1nj=1m[gcd(i,j)=d]\begin{aligned} &\sum_{i=1}^{n} \sum_{j=1}^{m} f\left(\gcd\left(i,j\right)\right) \\ =&\sum_{d=1}^{\min\left\{n,m\right\}}f(d) \sum_{i=1}^{n} \sum_{j=1}^{m}\left[\gcd\left(i,j\right)=d\right]\\ \end{aligned}
枚举 gcd\gcd 的结果 dd,然后调整要求。

技巧 22:构造元函数

以模板 11 为例:
d=1min{n,m}f(d)i=1nj=1m[gcd(i,j)=d]=d=1min{n,m}f(d)i=1ndj=1md[gcd(i,j)=1]=d=1min{n,m}f(d)i=1ndj=1mdkikjμ(k)\begin{aligned} &\sum_{d=1}^{\min\left\{n,m\right\}}f(d) \sum_{i=1}^{n} \sum_{j=1}^{m}\left[\gcd\left(i,j\right)=d\right]\\ =&\sum_{d=1}^{\min\left\{n,m\right\}}f(d) \sum_{i'=1}^{\left\lfloor {n\over d}\right\rfloor} \sum_{j'=1}^{\left\lfloor {m\over d}\right\rfloor}\left[\gcd\left(i',j'\right)=1\right]\\ =&\sum_{d=1}^{\min\left\{n,m\right\}}f(d) \sum_{i=1}^{\left\lfloor {n\over d}\right\rfloor} \sum_{j=1}^{\left\lfloor {m\over d}\right\rfloor} \sum_{k|i\land k|j} \mu\left(k\right) \end{aligned}
考虑到,若 gcd(i,j)=d\gcd(i,j)=d,那么 i,ji,j 都是 dd 的倍数,且 gcd(id,jd)=dd=1\gcd\left({i \over d},{j\over d}\right)={d\over d}=1
因此,直接枚举 dd 的倍数。
换元 i=id,j=jdi'={i\over d},j'={j\over d}
因此,ii' 的上限就变为了 nd\left\lfloor {n\over d}\right\rfloorgcd(i,j)=1\gcd(i',j')=1
[gcd(i,j)=1]\left[\gcd\left(i',j'\right)=1\right] 可以直接使用莫比乌斯函数的性质。
以约数个数和为例,
d(x)d(x) 表示 xx 的约数个数:
i=1nj=1md(ij)=i=1nj=1muivj[gcd(u,v)=1]=u=1nv=1m[gcd(u,v)=1]uivj1=u=1nv=1m[gcd(u,v)=1]numv=u=1nv=1mnumvdidjμ(d)\begin{aligned} &\sum_{i=1}^n{\sum_{j=1}^{m}d(ij)}\\ =&\sum_{i=1}^n{\sum_{j=1}^{m}\sum_{u|i}{\sum_{v|j}{[\gcd(u,v)=1]}}}\\ =&\sum_{u=1}^n\sum_{v=1}^{m}[\gcd(u,v)=1]\sum_{u|i}\sum_{v|j}1\\ =&\sum_{u=1}^n\sum_{v=1}^{m}[\gcd(u,v)=1]\left\lfloor{n\over u}\right\rfloor\left\lfloor{m\over v}\right\rfloor\\ =&\sum_{u=1}^n\sum_{v=1}^{m}\left\lfloor{n\over u}\right\rfloor\left\lfloor{m\over v}\right\rfloor\sum_{d|i\land d|j}{\mu(d)}\\ \end{aligned}
这里对 d(ij)=uivj[gcd(u,v)=1]d(ij)=\sum\limits_{u|i}{\sum\limits_{v|j}{[\gcd(u,v)=1]}} 不展开证明,感兴趣的可以自证。

技巧 33:交换大型运算符+换元

以模板 11 为例:
d=1min{n,m}f(d)i=1ndj=1mdkikjμ(k)=d=1min{n,m}f(d)k=1min{nd,md}μ(k)i=1nkdj=1mkd1=d=1min{n,m}f(d)k=1min{nd,md}μ(k)nkdmkd=d=1min{n,m}k=1min{nd,md}f(d)μ(k)nkdmkd=t=1min{n,m}ktf(tk)μ(k)ntmt=t=1min{n,m}ntmtktf(tk)μ(k)\begin{aligned} &\sum_{d=1}^{\min\left\{n,m\right\}}f(d) \sum_{i=1}^{\left\lfloor {n\over d}\right\rfloor} \sum_{j=1}^{\left\lfloor {m\over d}\right\rfloor} \sum_{k|i\land k|j} \mu\left(k\right)\\ =&\sum_{d=1}^{\min\left\{n,m\right\}}f(d) \sum_{k=1}^{\min\left\{\left\lfloor {n\over d}\right\rfloor,\left\lfloor {m\over d}\right\rfloor\right\}}\mu\left(k\right) \sum_{i=1}^{\left\lfloor {n\over kd}\right\rfloor} \sum_{j=1}^{\left\lfloor {m\over kd}\right\rfloor} 1\\ =&\sum_{d=1}^{\min\left\{n,m\right\}}f(d) \sum_{k=1}^{\min\left\{\left\lfloor {n\over d}\right\rfloor,\left\lfloor {m\over d}\right\rfloor\right\}}\mu\left(k\right) \left\lfloor {n\over kd}\right\rfloor \left\lfloor {m\over kd}\right\rfloor\\ =&\sum_{d=1}^{\min\left\{n,m\right\}} \sum_{k=1}^{\min\left\{\left\lfloor {n\over d}\right\rfloor,\left\lfloor {m\over d}\right\rfloor\right\}}f(d)\mu\left(k\right) \left\lfloor {n\over kd}\right\rfloor \left\lfloor {m\over kd}\right\rfloor\\ =&\sum_{t=1}^{\min\left\{n,m\right\}} \sum_{k|t}f\left({t\over k}\right)\mu\left(k\right) \left\lfloor {n\over t}\right\rfloor \left\lfloor {m\over t}\right\rfloor\\ =&\sum_{t=1}^{\min\left\{n,m\right\}} \left\lfloor {n\over t}\right\rfloor \left\lfloor {m\over t}\right\rfloor \sum_{k|t}f\left({t\over k}\right)\mu\left(k\right) \end{aligned}
将含 μ\mu 的式子换到第二个,再令 t=kdt=kd,得到最终式子。
以约数个数和为例:
u=1nv=1mnumvdidjμ(d)=d=1min{n,m}μ(d)diinnidjjmmj=d=1min{n,m}μ(d)i=1ndnidj=1mdmjd\begin{aligned} &\sum_{u=1}^n\sum_{v=1}^{m}\left\lfloor{n\over u}\right\rfloor\left\lfloor{m\over v}\right\rfloor\sum_{d|i\land d|j}{\mu(d)}\\ =&\sum_{d=1}^{\min\{n,m\}}{\mu(d)\sum_{d|i\land i\le n}{\left\lfloor {n\over i}\right\rfloor}\sum_{d|j\land j\le m}{\left\lfloor {m\over j}\right\rfloor}}\\ =&\sum_{d=1}^{\min\{n,m\}}{\mu(d) \sum_{i=1}^{\left\lfloor{n\over d}\right\rfloor}{\left\lfloor {n\over id}\right\rfloor} \sum_{j=1}^{\left\lfloor{m\over d}\right\rfloor}{\left\lfloor {m\over jd}\right\rfloor} }\\ \end{aligned}

技巧 44:快速预处理

运用狄利克雷卷积,推出积性:
f(x)=dxxdμ(d)f(x)=\sum\limits_{d|x} {x\over d}\mu(d)
可以看作:f=Id1μf=\mathrm{Id}_1 * \mu
由于 Id1,μ\mathrm{Id}_1,\mu 都是积函数,
所以 ff 是积函数。
直接推出积性:
f(x)=dxdμ(d)f(x)=\sum\limits_{d|x} d\mu(d)
定义 g(x)=xμ(x)g(x)=x\mu(x)
a,ba,b 满足 gcd(a,b)=1\gcd(a,b)=1
g(ab)=abμ(ab)=aμ(a)bμ(b)=g(a)g(b)g(ab)=ab\mu(ab)=a\mu(a)b\mu(b)=g(a)g(b)
因此 gg 为积函数,
又因为 f=Id0gf=\mathrm{Id_0} * g,所以 ff 也是积函数。
当然,不乏有棘手的式子难以转移,
这类转移有时是题的难点,
不妨打表得到结论反推证明。

技巧 55:换眼光看式子

以约数个数和为例:
d=1min{n,m}μ(d)i=1ndnidj=1mdmjd=d=1min{n,m}μ(d)i=1ndndij=1mdmdj\begin{aligned} &\sum_{d=1}^{\min\{n,m\}}{\mu(d) \sum_{i=1}^{\left\lfloor{n\over d}\right\rfloor}{\left\lfloor {n\over id}\right\rfloor} \sum_{j=1}^{\left\lfloor{m\over d}\right\rfloor}{\left\lfloor {m\over jd}\right\rfloor} }\\ =&\sum_{d=1}^{\min\{n,m\}}{\mu(d) \sum_{i=1}^{\left\lfloor{n\over d}\right\rfloor}{\left\lfloor {\left\lfloor{n\over d}\right\rfloor\over i}\right\rfloor} \sum_{j=1}^{\left\lfloor{m\over d}\right\rfloor}{\left\lfloor {\left\lfloor{m\over d}\right\rfloor\over j}\right\rfloor} } \end{aligned}
这种形式便于预处理:f(x)=i=1xxif(x)=\sum\limits_{i=1}^{x} {\left\lfloor{x\over i}\right\rfloor}

技巧 66:无关项分别求解

在乘法的莫比乌斯反演中很可能出现,
以幽灵乐团为例:
i=1Aj=1Bk=1C(lcm(i,j)gcd(i,k))α\prod_{i=1}^{A}{\prod_{j=1}^{B}{\prod_{k=1}^{C}{\left(\frac{\mathrm{lcm}(i,j)}{\gcd(i,k)}\right)^\alpha}}}
观察上式,可以将其拆为:
(i=1Aj=1Bk=1Ciα)(i=1Aj=1Bk=1Cjα)(i=1Aj=1Bk=1Cgcd(i,j)α)(i=1Aj=1Bk=1Cgcd(i,k)α){ \left( \prod\limits_{i=1}^{A} \prod\limits_{j=1}^{B} \prod\limits_{k=1}^{C} i^\alpha \right)\left( \prod\limits_{i=1}^{A} \prod\limits_{j=1}^{B} \prod\limits_{k=1}^{C} j^\alpha \right) \over \left( \prod\limits_{i=1}^{A} \prod\limits_{j=1}^{B} \prod\limits_{k=1}^{C} \gcd(i,j)^\alpha \right) \left( \prod\limits_{i=1}^{A} \prod\limits_{j=1}^{B} \prod\limits_{k=1}^{C} \gcd(i,k)^\alpha \right) }

技巧 77:对数反演

(名字是乱起的)
定义 ln(f)(x)=ln(f(x)),exp(f)(x)=exp(f(x))\ln(f)(x)=ln(f(x)),\exp(f)(x)=\exp(f(x))
那么 f=exp(ln(f))f=\exp(\ln(f))
ln\ln 可以让运算降级,方便计算。

技巧 88:积分估值

有时会出现双重整数分块:
i=1nnij=1ninjj\sum\limits_{i=1}^{n}\left\lfloor{n\over i}\right\rfloor\sum\limits_{j=1}^{\left\lfloor{n\over i}\right\rfloor} \left\lfloor{n\over j}\right\rfloor j
这一式子计算的复杂度为 Θ(n34)\Theta(n^{3 \over 4}),可以使用积分估值计算复杂度。

评论

8 条评论,欢迎与作者交流。

正在加载评论...