莫比乌斯反演
这里讲述几个莫比乌斯反演的套路技巧。我们从一道道例题讲起。
这就是一般公式
- 暴力算
转换为枚举最大公约数
例题1 P2568 GCD
给定正整数
思路点拨
如果我们暴力的去枚举一个个
接下来就会有两种做法,欧拉函数或者莫反,这里讲述莫反,就是套上述的套路一。
这样运用富比尼定理就可以
- 令
并且枚举T
这样往往可以优化时间。
左边富比尼定理,右边筛法算就可以了。
-
分母分子分开算
-
转
有时候我们需要计算的东西是一堆分数的乘积并且取余数,那么就可以这样降低思考难度。
例题二 P5221 Product
我们知道,在膜意义下的运算,分母是会被运用欧拉定理转化为幂的形式的,所以有交配律,原式就可以被转化为:
莫反不好考虑
分开考虑,先从简单的分子下手:
在考虑分母,平方先去掉,最后再一起算。
我们按照上边的套路,取枚举
考虑幂次的部分,记得欧拉降幂不然会WA:
这个东东欧拉函数算就可以了。但是莫比乌斯函数也不是不行。
最后我们讲一道略难的综合题。
例题三 [SDOI2017]数字表格
题目背景
Doris 刚刚学习了 fibonacci 数列。用
题目描述
Doris 用老师的超级计算机生成了一个
第
Doris 的表格中共有
答案对
思路点拨
我们知道,斐波拉契数列这东西一下求这么多和并不好算,但是因为
- 套路把
给提出来(之前都用了很多遍了)
注意,这里是体现莫比乌斯函数优越性的地方了,应为
带入原式中,并且使用
括号里面的就预处理,一个筛法,随便写。外面的根幂次有关的就考虑富比尼定理求解。时间复杂度
在知道了上面的小套路之后,简单的莫反(紫左右)大部分是可以写了。
下面再给出一些综合运用的例题:
- 这题中涉及到了另一个有意思的想法就是通过对序列中的数计数而转化为更一般的问题,请读者自行探索。有一点难。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通