莫反
整除分块和狄利克雷卷积没啥说的。
规定莫比乌斯函数 \(\mu(i)\) 满足 \(i\) 被表示为 \(x\) 个单个质因子的积时返回值为 \((-1)^x\)。其余时为 \(0\),\(\mu(1)=1\)。
有重要性质
\[\sum_{d|n}\mu(d)=[n=1]
\]
证明:不妨设
\[n=\prod^m p_i^{a_i},n'=\prod^m p_i
\]
则应满足
\[\sum_{d|n}\mu(d)=\sum_{d|n'}\mu(d)
\]
后面一部分的每个 \(\mu(d)\) 都是有返回值的,\(n'\) 有保证了质因子不同所以对 \(x=i\) 个质因子的情况有 \(\binom{m}{i}\) 种取法,返回值全为 \((-1)^i\)
二项式定理:
\[\sum_{d|n}\mu(d)=\sum_{d|n'}\mu(d)=\sum_{i=1}^m\binom{m}{i}(-1)^i=(1+(-1))^m=1
\]
然后好了。
有一个很典的应用,即莫反:
\[[gcd(i,j)=1]=\sum_{d|gcd(i,j)}\mu(d)=\sum_{d=1}^n[d|i][d|j]\mu(d)
\]
\[Ans=\sum_{i=1}^n\sum_{j=1}^m[gcd(i,j)\in prime]\\
\]
\[=\sum_{d=1}^n[d\in prime]\sum_{i=1}^n\sum_{j=1}^m[gcd(i,j)=d]\\
\]
\[=\sum_{d\in prime}\sum_{i=1}^{\frac{n}{d}}\sum_{j=1}^{\frac{m}{d}}\sum_{x=1}^{\frac{n}{d}}[x|i][x|j]\mu(x)\\
\]
\[=\sum_{d\in prime}\sum_{x=1}^{\frac{n}{d}}\mu(x)\lfloor\frac{n}{dx}\rfloor\lfloor\frac{m}{dx}\rfloor
\]
这种多变量难以整除分块就设 \(T=dx,x=\frac{T}{d}\)
。原式变为
\[=\sum_{d\in prime}\sum_{d|T}^n\mu(\frac{T}{d})\lfloor\frac{n}{T}\rfloor\lfloor\frac{m}{T}\rfloor\\
\]
\[=\sum_{T=1}^n\lfloor\frac{n}{T}\rfloor\lfloor\frac{m}{T}\rfloor\sum_{d|T,d\in prime}\mu(\frac{T}{d})
\]
然后前半整除分块后半调和级数预处理,有的时候后半满足积性函数,可以直接在线筛的时候处理出来。复杂度 \(O(\sqrt n)\)
其他题都大同小异,不多说了。
设 \(\sigma(n)\) 表示约数和。就是
\[\sum_{i=1}^n\sum_{j=1}^m\sigma(gcd(i,j))[\sigma(gcd(i,j))\le a)]
\]
\[=\sum_{d=1}\sigma(d)[\sigma(d)\le a]\sum_{i=1}^n\sum_{j=1}^m[gcd(i,j)=d]
\]
然后拆就行了最后长成
\[=\sum_{T=1}^n\lfloor\frac{n}{T}\rfloor\lfloor\frac{m}{T}\rfloor*(\sum_{d|T}\sigma(d)[\sigma(d)\le a]\mu(\frac{T}{d}))
\]
给括号设成 \(F(T)\),但是有个啥b偏序没法预处理,直接给询问离线按a排序然后逐个加入,前缀和拿树状数组处理。
P3704
为啥学校oj写东西不显示latex??
就是说,把求和改成指数形式。
\[Ans=\prod_{i=1}^n\prod_{j=1}^mf(gcd(i,j))\\
\]
\[=\prod_{d=1}^nf^{\sum_{i=1}^{\lfloor \frac{n}{d}\rfloor}\sum_{j=1}^{\lfloor \frac{j}{m}\rfloor}[gcd(i,j)=d]}(d)\\
\]
\[=\prod_{d=1}^nf^{\sum_{x=1}^{\lfloor \frac{n}{d}\rfloor}\mu(x)\lfloor\frac{n}{dx}\rfloor\lfloor\frac{m}{dx}\rfloor}(d)
\]
设 \(T=dx,x=\frac{T}{d}\)。
\[Ans=\prod_{d=1}^nf^{\sum_{d|T}^n\mu(\frac{T}{d})\lfloor\frac{n}{T}\rfloor\lfloor \frac{m}{T}\rfloor}(d)\\
\]
\[=\prod_{T=1}^n\prod_{d|T}f^{\mu(\frac{T}{d}\lfloor\frac{n}{T}\rfloor\lfloor \frac{m}{T}\rfloor)}(d)\\
\]
\[=\prod_{T=1}^n(\prod_{d|T}f^{\mu(\frac{T}{d})}(d))^{\lfloor\frac{n}{T}\rfloor\lfloor \frac{m}{T}\rfloor}
\]
设 \(F(x)=\prod_{d|T}f^{\mu(\frac{T}{d})}(d)\),可以调和级数复杂度算出来。
\[Ans=\prod_{T=1}^nF^{\lfloor\frac{n}{T}\rfloor\lfloor \frac{m}{T}\rfloor}(T)
\]
相当于把数论分块挪到指数上,想一下就是维护前缀积算的时候拿逆元和快速幂算。
敲式子敲得手疼别的题有时间再整理。
\[Ans=\sum_{d=1}^a\sum_{i=1}^a\sum_{j=1}^bf(d)[gcd(i,j)=d]
\]
\[=\sum_{d=1}^a\sum_{i=1}^{\lfloor a/d\rfloor}\sum_{j=1}^{\lfloor b/d\rfloor}f(d)\sum_{x|gcd(i,j)}\mu(x)
\]
\[=\sum_{d=1}^a\sum_{i=1}^{\lfloor a/d\rfloor}\sum_{j=1}^{\lfloor b/d\rfloor}f(d)\sum_{x=1}^a[x|i][x|j]\mu(x)
\]
\[=\sum_{d=1}^af(d)\sum_{x=1}^a\mu(x)\lfloor \frac{a}{dx}\rfloor\lfloor \frac{b}{dx}\rfloor
\]
\(f(x)\) 可以线筛,后面的数论分块。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律