莫比乌斯反演入门题目,但是先从容斥的角度理解这道题目
由于这道题目的值在多组询问里可以不同,所以不用数论容斥,换一个角度,考虑把除进去然后互质
所以主要就是解释一下是怎么推导的
我们从容斥原理的角度考虑。对于任意一个二元组,如果,那么一定是某一个质数的倍数
设表示最大公约数的质数的倍数的集合,那么我们要求的反面就是,将这个式子用容斥原理打开即可
然后我们震惊的发现,这个完全可以用莫比乌斯函数来描述。比如求,就是求的倍数的个数,其质因子的指数都为(也就是所说的square-free number),所以莫比乌斯函数的值也就为,而且符号刚好与容斥中的符号相符;至于对于莫比乌斯函数值为的数,此时就是某个质因子的指数大于了,刚好我们写成这种形式不会影响答案
所以以上模型可以记住
最后讲一下那个优化
由于最多贡献个不同的值,最多贡献个不同的值,所以两者放一起就是最多贡献个值;像代码那么写的话,每一次一定会跳到某一个段的右端点,也就是或者贡献的不同值,所以最多也只会跳根号次
类似的简单容斥:Problem b
然后来讲一下莫比乌斯反演
莫比乌斯反演的基本操作就是将式子化出一个,然后利用公式化简
基本步骤:
第一步,化出(如果没有就强行凑)
第二步,利用公式将换掉
第三步,换序,将上面的放到最外层枚举
换序这一步一般是最关键的,一般来说,出现了这种式子,那么要么把放在外层枚举(这个“外层”不一定是整个式子的最外层,比如三层循环的话,第二层也是第二层和第三层的外层),要么令,然后枚举
当然上面说的是一般,有一种反例,也就是反演的第二形式,就要有限枚举(是什么看下面几道题目就知道了)
以上就是莫比乌斯反演题目的套路做法。然后还要提醒一个需要注意的小点,我们证明过,这个式子既有可能从左往右用也有可能从右往左用
那么对于这道题目的莫比乌斯反演解法就去看OI-wiki就好了,由于出现的是而不是,所以将除进去就好了
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构