zoukankan      html  css  js  c++  java
  • 「从零开始的莫比乌斯反演」0. 序

    如题,这是一篇序。

    最近两天在学莫比乌斯反演,搜各种博客,搞得很头疼,感觉要学的东西非常多,而且乱。所以写一篇教程,顺便巩固一下知识。

    莫比乌斯反演是什么

    这个名字咋一看其实挺吓人的,毕竟突然就出现了“莫比乌斯”和“反演”这样两个没听说过而且很高大上的词。莫比乌斯反演是干什么的?举个例子:

    给定(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的教程,但是莫比乌斯反演在数论中并不是很基础的内容,你仍然需要有一些数论的基础知识。

  • 相关阅读:
    vue 同时使用过渡和动画
    ie和火狐事件addEventListener()及attachEvent()区别分析
    闭包的理解
    实现Date函数属性中的format方法
    js读取cookie信息
    js解决千分符问题
    js脚本语言在页面上不执行
    split使用和特殊使用(包括截取第一个字符后的数据)
    js中请求数据的$post和$ajax区别(同步和异步问题)
    禁止页面拖拽事件(数据什么的)
  • 原文地址:https://www.cnblogs.com/icysky/p/13726897.html
Copyright © 2011-2022 走看看