数论-进阶#
扩展欧拉定理#
若 b≥φ(m) 则有 ab≡abmodφ(m)+φ(m)(modm)
思路:
题目要你求:
2222⋯modp
的值,多组询问
很显然,设 2222⋯=x 则由于扩展欧拉定理:
2x≡2xmodφ(p)+φ(p)(modp)
然后出现了 2xmodφ(p) 这个式子,我们就可以不断递归求解了
狄利克雷卷积#
数论函数 f(n) 和 g(n) 的狄利克雷卷积定义为:
h(n)=∑d|nf(d)g(nd)
记作:h=f∗g
两个积性函数的狄利克雷卷积也是积性函数
两个积性函数对应位置相乘所得到的函数也是积性函数
交换律结合律#
f∗g=g∗f
f∗(g∗h)=(f∗g)∗h
其中 f,g,h 为积性函数
I 函数#
I(n)=[x=1]
I 是单位元,∀ 数论函数 f 都有 f∗I=I∗f=f
狄利克雷逆#
若 f∗g=I,则 f,g 互为彼此的狄利克雷逆
常见积性函数及性质#
1 函数:1(n)=1
Id 函数:Id(n)=n
I 函数:I(n)=[n=1]
Id=φ∗1→Id∗μ=φ
莫比乌斯反演#
莫比乌斯函数#
对于 μ(n)
若 n=1 则 μ(n)=1
若 n=p1⋅p2⋯pk(其中 pi 为互异素数) 则 μ(n)=(−1)k
否则 μ(n)=0
由于 1∗μ=I,所以 1,μ 互为彼此的狄利克雷逆
设数论函数 f,称 F=f∗1 为莫比乌斯变换
设数论函数 F,称 f=F∗μ 为莫比乌斯反演
优秀的性质#
对于约数个数函数 d(x) 有如下性质:
d(i⋅j)=∑x|i∑y|j[gcd(x,y)=1]
∑d|nμ(d)d=φ(n)n
∑d|gcd(i,j)μ(d)=[gcd(i,j)=1]
Id∗μ=φ
此题即求:
2×n∑i=1m∑j=1gcd(i,j)−n×m
后续我们假定 n≤m
显然我们需要求的就是
n∑i=1m∑j=1gcd(i,j)
按照常规套路,枚举 gcd(i,j) 等于多少
n∑k=1kn∑i=1m∑j=1[gcd(i,j)=k]
常规莫比乌斯反演
n∑k=1knk∑i=1mk∑j=1[gcd(i,j)=1]
n∑k=1knk∑i=1mk∑j=1∑d|gcd(i,j)μ(d)
n∑k=1knk∑d=1μ(d)⌊nkd⌋⌊mkd⌋
这样再使用整出分块足以通过此题
然而我们仍可以优化
我们令 T=kd
n∑k=1kn∑T=1[k|T]μ(Tk)⌊nT⌋⌊mT⌋
优先枚举 T
n∑T=1∑k|Tk⋅μ(Tk)⌊nT⌋⌊mT⌋
由于有关狄利克雷卷积的常识 Id∗μ=φ,原式可以化简为
n∑T=1φ(T)⌊nT⌋⌊mT⌋
那么此题就可以在 O(min(n,m)) 的时间内解决
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现