如题,这是一篇序。
最近两天在学莫比乌斯反演,搜各种博客,搞得很头疼,感觉要学的东西非常多,而且乱。所以写一篇教程,顺便巩固一下知识。
莫比乌斯反演是什么
这个名字咋一看其实挺吓人的,毕竟突然就出现了“莫比乌斯”和“反演”这样两个没听说过而且很高大上的词。莫比乌斯反演是干什么的?举个例子:
例
给定(n,m),求:
[sumlimits_{i=1}^{n}sumlimits_{j=1}^{m} [operatorname{gcd}(i,j)=1]
]
([operatorname{gcd}(i,j) = 1])的意思是如果(i,j)满足(operatorname{gcd}(i,j) = 1),就为(1),否则为(0)。
对于全部测试点,(1 leq n, m leq 5 imes 10^4)
这道题显然是不能暴力枚举的。反演可以把它的复杂度降到(O(n + Tsqrt{n})),其中(T)是询问的次数。
莫比乌斯反演能用来解决一些这种数论函数求和的问题。
现在,莫比乌斯反演是不是不那么神秘了?
学习路线
学莫比乌斯反演之前是有一系列的知识要学的。我个人建议是这样的:
线性筛(或其他筛法,至少会一种。建议复杂度不要高于(O(n)))&数论分块 -> 莫比乌斯函数 -> 狄利克雷卷积 -> 莫比乌斯反演
因为学习狄利克雷卷积的时候,了解一些莫比乌斯函数的相关性质会方便很多,所以就把莫比乌斯函数放到前面了。
这些奇怪的名词,看起来很高大上,不过一步一步扎实地学习,你会发现它们并没有那么难。比如狄利克雷卷积。
PS
虽然打算写一系列从零开始的教程,不过我不打算具体讲线性筛。但是线性筛的模版还是会给出的。
虽然说,本系列是想写面向Beginner的教程,但是莫比乌斯反演在数论中并不是很基础的内容,你仍然需要有一些数论的基础知识。