恶补数学。。。
狄利克雷卷积
定义
定义运算 (f∗g)(n)=∑d|nf(d)g(nd),记为狄利克雷卷积。
注:在数论中,∗ 读作“卷”。
性质
-
f∗g=g∗f(交换律)
-
f∗(g∗h)=(f∗g)∗h(结合律)
-
(f + g)∗h=f∗h+g∗h(分配律)
-
xf∗g=x(f∗g)(优先级大)
-
有单位元 ϵ(n)=[n=1],即 f∗ϵ=ϵ∗f=f
-
对于每一个 f(1)≠0 的函数 f,存在逆元 g 使得 f∗g=ϵ
-
若 g 是 f 的逆元,只需要让 g(n) 满足以下式子即可:
g(n)=1f(1)(ϵ(n)−∑i|n,i≠1f(i)g(ni))
另外一些有用的计算
点乘
定义 (f ⋅ g)(x)=f(x)g(x)
那么当 f 是完全积性函数时,有 (f ⋅ g)∗(f ⋅ h)=f⋅(g∗h)
一些常见的数论函数
-
1(x)=1,常函数,不管自变量取值多少恒为一,具有完全积性。
-
id(x)=x,idk(x)=xk,标号函数,返回自变量本身,具有完全积性。
-
φ(x)=x∑i=1[gcd(i,x)=1],欧拉函数,表示小于某正整数且与该数互质的正整数的个数
-
ϵ(x)=[x=1],约定中括号返回一个布尔量,中括号内表达式为真返回1,否则返回0。整数域下有积性。
-
d(x)=∑d|x1,表示 x 的约数个数。
-
σ(x)=∑d|xd,表示 x 的约数和。
μ 函数
定义
定义 1 的逆为 μ。
性质
μ(pk)=⎧⎨⎩1(k=0)−1(k=1)0(k>1)
一些常见数论函数间的关系
-
d=1∗1
-
σ=1∗id
-
id=1∗φ
-
σ=1∗1∗φ=d∗φ
-
φ=id∗μ
-
1=d∗μ
-
id=σ∗μ
莫比乌斯反演
定理内容
若 g=f∗1,则 f=g∗μ。
例
求:
n∑i=1m∑j=1gcd(i,j)
可以对式子进行如下变化:
令 N=min(n,m),则原式
=N∑i=1N∑j=1gcd(i,j)=N∑d=1dN∑i=1N∑j=1[gcd(i,j)=d]=N∑d=1d⌊Nd⌋∑i=1⌊Nd⌋∑j=1[gcd(i,j)=1]
后面可以用莫比乌斯反演转化为 O(√n),总复杂度 O(n√n),进一步优化:
=N∑d=1d⌊Nd⌋∑i=1μ(i)⌊nid⌋⌊mid⌋=N∑d=1dN∑id=1μ(i)⌊nid⌋⌊mid⌋
令 T=id,对于每一个 T,只有 i=Td,T mod d=0,则
=N∑d=1d∑T=1N[T mod d=0]μ(Td)⌊nT⌋⌊mT⌋
因为 T 只和 d 有关,所以
=N∑d=1dN∑d|Tμ(Td)⌊nT⌋⌊mT⌋
将 d 乘进去
=N∑d=1N∑d|Tdμ(Td)⌊nT⌋⌊mT⌋
我们可以改变枚举变量,原式枚举的是 d 的倍数,已知在 1−N 中枚举一个数的倍数和 1−N 中枚举一个数的因子是等价的,所以我们可以把枚举 d 的倍数改为枚举 T 的因子,那么就有
=N∑T=1∑d|Tdμ(Td)⌊nT⌋⌊mT⌋
显然,式中有一个经典的卷积形式
∑d|Tdμ(Td)=id∗μ
令 h=id∗μ,则
h∗1=id∗μ∗1h∗1=id∗ϵh∗1=id
又因为 φ∗1=id,所以 h=φ,则原式为
=N∑T=1φ(T)⌊nT⌋⌊mT⌋
欧拉函数前缀和可以用杜教筛求得,总时间复杂度 O(n23)。
例题:
P1829 Crash 的数字表格
求:
n∑i=1m∑j=1lcm(i,j)
n,m⩽107
P3327 [SDOI2015] 约数个数和
求:
n∑i=1m∑j=1d(ij)
1⩽T,n,m⩽5×104
提示:
d(i,j)=∑x|i∑y|i[i ⊥ j]
本文作者:Code_AC
本文链接:https://www.cnblogs.com/code-ac/p/16796053.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步