莫比乌斯反演学习笔记

以前都是抄的,现在重新学。很菜勿喷。

积性函数 f(ab)=f(a)f(b),gcd(a,b)=1

φ,μ,σ,d

完全积性函数 f(ab)=f(a)f(b)

I(x)=1,id(x)=x,ϵ(x)=[x=1]

设有两个函数 fg,他们的

狄利克雷卷积 (fg)=d|nf(d)g(nd)

  • fϵ=f
  • μI=ϵ
  • φI=id
  • μid=φ

莫比乌斯反演 f(n)=d|ng(d)g(n)=d|nμ(d)f(nd)

证明:fμ=gIμ=gϵ=g


1.求i=1nj=1ngcd(i,j)

Link

引理 1 d|nμ(d)=[n=1]

证明:由 μI=ϵ 易得。

引理 2 i=1nd|iμ(d)=d=1nndμ(d)

显然。

推论 i=1nj=1m[gcd(i,j)=1]=d=1min(n,m)μ(d)ndmd

证明:i=1nj=1m[gcd(i,j)=1] 由引理 1 知,i=1nj=1md|gcd(i,j)μ(d)i=1nj=1md|id|jμ(d)i=1nd|ij=1md|jμ(d) 由引理 2 知,i=1nd|id=1mmdμ(d)d=1nndd=1mmdμ(d)d=1min(n,m)ndmdμ(d) 证毕。

i=1nj=1ngcd(i,j)d=1ndi=1nj=1n[gcd(i,j)=d]s=nd

d=1ndi=1sj=1s[gcd(i,j)=1] 由推论得d=1ndq=1sμ(q)sq2d=1ndq=1ndμ(q)ndq2 可以线性筛预处理 μ 的前缀和,枚举 d,对 sq 整除分块,时间复杂度 O(n)


2.求i=1nj=1m[gcd(i,j)prime] Link

假设 nm

k=1kn,k is primei=1nj=1m[gcd(i,j)=k]k=1kn,k is primei=1nkj=1mk[gcd(i,j)=1]k=1kn,k is primed=1nμ(d)nkdmkds=kd

k=1kn,k is primed=1nμ(d)nsmss=1nnsmsk|sk is primeμ(sk) 右边那个可以预处理,就做完了,时间复杂度 O(n+Tn)


3.求i=1nj=1mσ(gcd(i,j))[σ(gcd(i,j))a] Link

假设 nm

先推i=1nj=1mσ(gcd(i,j))d=1nσ(d)i=1ndj=1md[gcd(i,j)=1]d=1nσ(d)p=1ndμ(p)ndpmdps=dp

s=1nd|sσ(d)μ(sd)nsmss=1nnsmsd|sσ(d)μ(sd)

f(s)=d|sσ(d)μ(sd)[σ(d)a]

现在要求 σ(d)a,则将询问离线,将 a 从小到大排序,对新加入的 σ(d) 枚举 s,对 f(s) 加入 σ(d)μ(sd) 的贡献。而进行整除分块是需要查询区间 f(x) 和,于是采用树状数组维护 f(x) 前缀和。时间复杂度 O(nlog2n+qnlogn)

代码:Here


4.设 f(n)=d|n[dN+]

k th number of {x|f(x)=0} Link

即求min{x|i=1xμ2(i)=k}

这个东西已经可以杜教筛了,但是我们讨论莫比乌斯反演。

可以二分答案,问题转为求 [1,n] 内不含非 1 完全平方数因子的数的个数。

考虑去掉所有质数的完全平方数的倍数,但是此时会有重复计算的,如 36 被筛了三次。

所以需要容斥,我们发现只需容斥至 n 即可。

i=1xμ2(i) 按照定义可以看为

全体数 为一个质因数的平方数的倍数的数的个数 + 为两个不同质因数乘积的平方数的倍数的数的个数 三个不同质数乘积的平方数的倍数的数的个数。

即可转化为i=1nμ(i)ni2 时间复杂度 O(Tnlogn)


5.求i=1nj=1mlcm(i,j) Link

假设 nm

i=1nj=1mijgcd(i,j)i=1nj=1mdijd[gcd(i,j)=d]d=1ndi=1ndj=1mdij[gcd(i,j)=1]

f(n,m)=i=1nj=1mij[gcd(i,j)=1],g(n,m)=i=1nj=1mij=n(n+1)2m(m+1)2

引理 f(n,m)=d=1nμ(d)d2g(nd,md)

f(n,m)=d=1nd|ind|jmμ(d)ijs=di,t=dj

f(n,m)=d=1nμ(d)d2s=1ndt=1mdij=d=1nμ(d)d2nd(nd+1)2md(md+1)2

即可前缀和搞定。

回到原式,

d=1ndf(nd,md)

时间复杂度 O(n)=O(n)×O(n)

代码:Here

另解:d=1ndi=1ndj=1mdij[gcd(i,j)=1]d=1ndi=1ndj=1mdijq|gcd(i,j)μ(q)d=1ndq=1ndq2μ(q)g(ndq,mdq)s=dq

s=1ng(ns,ms)dq=sdq2μ(q)s=1ng(ns,ms)sq|sqμ(q) 右边那堆可以线性筛预处理。

于是现在询问的复杂度将至 O(n),可以出成多组数据,时间复杂度 O(n+Tn)

代码:Here


6.给 a1,2,...,n,求i=1nj=1nlcm(ai,aj) Link

ci=k=1n[ak=i],v=maxk=1n(ak)

i=1vj=1vlcm(i,j)cicji=1vj=1vijcicjgcd(i,j)i=1vj=1vdijcicjd[gcd(i,j)=d]d=1vdi=1vdj=1vdijcicj[gcd(i,j)=1]d=1vdi=1vdj=1vdijcicjq|gcd(i,j)μ(q)d=1vdq=1vdq2μ(q)i=1vdqj=1vdqijcicjs=dq

s=1v(i=1vscisi)2sq|sqμ(q)

筛一下就能 O(vlnv) 了。


7.设 f(x)n 所含质因子的最大幂指数,求i=1nj=1mf(gcd(i,j)) Link

nm

d=1nf(d)i=1ndj=1md[gcd(i,j)=1]d=1nf(d)q=1ndμ(q)ndqmdqs=dq

s=1nnsmsd|sf(d)μ(sd) 写出 s 的标准分解式 s=i=1kpiqi,因为 μ 不为 0 当且仅当所有质因子指数为 1,所以只有 2k 个对应的 d。如果确定最高次幂 pxqx1,剩余的位都能选或不选,此时的 μ 也相对应地都为 1,1f(d) 也均相等,和为 0

若全部次幂完全相同,即 s=i=1kpiq,则 d=i=1kpiq1f(d)=q1,其余时候 f(d)=q

由于有一情况 f(d)=q1,其贡献为 1×μ(i=1kpi)=1n+1.

时间复杂度 O(n+Tn)

代码:Here


注意:以下题目的难度顺序可能不递增


8.求i=1nj=1nlcm(i,j)gcd(i,j) Linki=1nj=1nijgcd(i,j)2i=1nj=1niji=1nj=1ngcd(i,j)2 考虑分开做,分子i=1nj=1niji=1ninn!(n!)2n 分母i=1nj=1ngcd(i,j)2d=1nd2i=1nj=1n[gcd(i,j)=d]d=1nd2q=1ndμ(q)ndq2

然后就可以整除分块了,时间复杂度 O(n)

代码:Here


9.求i=1nj=1md(ij) Link

引理 d(ij)=x|iy|j[gcd(x,y)=1]

留坑。i=1nj=1mx|iy|j[gcd(x,y)=1]x=1ny=1mnxmy[gcd(x,y)=1] 改写 x,yi,j

i=1nj=1mnimj[gcd(i,j)=1]f(x)=i=1nj=1mnimj[gcd(i,j)=x]g(x)=x|dnf(d)=i=1nj=1mnimj[x|gcd(i,j)]=i=1nxj=1mxnixmjx 根据莫比乌斯反演公式,有f(x)=x|dnμ(d)g(dx)f(1)=d=1nμ(d)g(d)g(x) 可以通过预处理 i=1qqiO(1) 得出。时间复杂度 O(nn+Tn)

代码:Here

另解:

此下令 n=m

i=1nj=1nx|iy|j[gcd(x,y)=1]d=1ni=1ndj=1ndp=1nidq=1njd[gcd(x,y)=1]d=1nμ(d)(i=1ndnid)2

使用杜教筛,求 μ 的前缀和可以做到 O(n23+n34) 的时间复杂度。

代码:Here


10.求i=1nik[gcd(i,n)=1] 其中n=i=1wpiqi Link

f(n)=i=1nikg(n)=i=1nik[gcd(i,n)=1]f(n)=d|ndkg(nd)莫比乌斯反演公式g(n)=d|nμ(d)dkf(nd) 众所周知,自然数幂和 f(n) 是关于 nk+1 次多项式,写成 f(n)=i=0k+1fini,代回得g(n)=d|nμ(d)dki=0k+1fi(nd)ig(n)=i=0k+1finid|nμ(d)dki 因为 n=i=1wpiqi,代入得g(n)=i=0k+1finij=1wq=1qjμ(pjq)pjq(ki)μ 的意义入手化简得g(n)=i=0k+1finij=1w(1pjki) 现在只需求自然数 k 次幂和的多项式即可,这个可以看 Here,这里不讲.

时间复杂度可以做到 O(k2+kw) 或者 O(k3+kw)

代码:Here

Next

posted @   ffffyc  阅读(6)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示