数论变换入门 莫比乌斯反演 杜教筛

271人阅读 评论(1) 收藏 举报
分类:

也许你已经学习了莫比乌斯反演,但看到式子还是不会化对不对。
但是你不用管它,就当你没学过,先记住两个式子:
等式一 [n=1]=d|nμd
等式二 n=d|nφd
那么容易发现这两个等式的意义,等式一可以把一个“判一”的式子化成可以计算的函数,等式二把一个数化到枚举范围里面去。
这么说不是很清楚,但一般来说我们都用以下的形式:
等式一变式 [gcd(a,b)=1]=d|gcd(a,b)μd
等式二变式 gcd(a,b)=d|gcd(a,b)φd

这两个式子是你首先要记住的。我们来看一道例题,这之后你可以学会DDZ重排,之后更多的内容就易如反掌了。以下的新内容都是DDZ重排。
【例题】求

i=1ngcd(i,n)

根据等式二变形,原式
=i=1nd|gcd(i,n)φd

我们知道,一个数是gcd(a,b)的因数,意味着它既整除a又整除b
那么,如果枚举d取遍1n的所有值(nd的最大可能值),然后在φd前面乘上满足的条件,也就是[d|i][d|j],不就一样了吗?
=i=1nd=1n[d|i][d|n]φd

显然,满足[d|n]=1的时候,dn的因数。因此我们先把它放到条件里面去。条件中两个都是常数,可以放到条件里。
=i=1nd|n[d|i]φd

我们发现d的枚举与i毫无关系,于是可以任意调换和号的位置。
=d|ni=1n[d|i]φd

因为是先枚举的d,因此在枚举i的时候,d相当于已经成为常数了。因此φd也是常数,我们可以把它提到外面去(乘法分配律)。
=d|nφdi=1n[d|i]

现在我们考察最后一个条件,d是确定的,要使id的倍数,i=1n[d|i]事实上就是求小于等于n的范围内d的倍数的个数。那不就直接除一下就是答案吗。
=d|nφdnd

学了DDZ重排,我们再来看由它得到的显然的几个结论。
重排变换 i=1nd|gcd(i,n)fd=d|nfdnd
混合重排变换 i=1nd|gcd(i,m)fd=d|mfdnd
扩展混合重排变换 i=1nd|gcd(i,m)fdgi=d|mfdi=1ndgid
其中第三个用到了扩展变换,如下
扩展变换 i=1n[d|i]fi=i=1ndfid

除此之外,还有一个新等式和两个重要的新变换
等式三 d|nμdd=φnn
收缩变换 i=1nd|ifd=i=1nd=1nifd
扩展变换和收缩变换都可以把枚举因数变成枚举前缀。注意扩展变换中变量是i,而收缩变换中变量是d
杜教筛变换 i=1nd|ifdgid=i=1ngid=1nifd
不能构造收缩变换的时候,可以构造一个gx,然后构造杜教筛变换。
上一篇博客讲了构造收缩变换,这里讲一道杜教筛变换。
【例题】求i=1nφii
我们要找一个与φii有关的式子。
如果只有φi的话,我们有d|nφd=n,然后套个前缀就可以收缩变换了。
构造杜教筛变换的要点是找到一个函数gnd,使与原来的fd乘起来可以套用公式。
这个i很烦,考虑把它吃掉。
于是构造式子

d|nφddnd=n2

为什么右边是n2应该比较显然吧。这里我们把nd当做gd,套一个前缀:
i=1nd|iφddid=i=1ni2

直接套杜教筛变换。(对照上面的式子看一下)
i=1nid=1niφdd=n(n+1)(2n+1)6

i=1niSni=n(n+1)(2n+1)6

Sn+i=2niSni=n(n+1)(2n+1)6

Sn=n(n+1)(2n+1)6i=2niSni

然后就杜教筛O(n23)求。


补充:约数个数变换:dnm=i|nj|m[gcd(i,j)=1] (SDOI2015)

查看评论

我也不知道什么是"莫比乌斯反演"和"杜教筛"

Part0 最近一直在搞这些东西 做了将近20道题目吧 也算是有感而发 写点东西记录一下自己的感受 如果您真的想学会莫比乌斯反演和杜教筛,请拿出纸笔,每个式子都自己好好的推一遍,理解清楚每一...
  • qq_30974369
  • qq_30974369
  • 2018-01-17 20:10:21
  • 880

[BZOJ4176]Lucas的数论(莫比乌斯反演+杜教筛)

题目描述传送门题解做约数个数和的时候有一个结论: d(nm)=∑i|n∑j|m[(i,j)=1]d(nm)=\sum\limits_{i|n}\sum\limits_{j|m}[(i,j)=1] ...
  • Clove_unique
  • Clove_unique
  • 2017-03-28 10:59:58
  • 1028

[杜教筛 约数个数前缀和] BZOJ 4176 Lucas的数论

吉丽博客传送门:http://jiruyi910387714.is-programmer.com/posts/195270.html 套用陈老师r老师等式后反演 #include #inc...
  • u014609452
  • u014609452
  • 2017-01-26 22:54:41
  • 800

数论学习笔记 欧拉函数 (一些性质和运用)内置杜教筛

定义在数论中,对正整数n,欧拉函数是小于等于n的数中与n互质的数的数目。并且用符号φ(n)\varphi(n)表示一个整数的欧拉函数。例如φ(8)=4\varphi(8) = 4。特殊的φ(1)=1\...
  • YxuanwKeith
  • YxuanwKeith
  • 2016-09-01 15:31:04
  • 3381

BZOJ 4176 [莫比乌斯反演][杜教筛]

DescriptionDescription求∑i=1n∑j=1nd(ij)\sum_{i = 1}^n\sum_{j = 1}^nd(ij)通过陈老师r老师等式可以的得到该式子就等于∑i=1n∑j=...
  • Vectorxj
  • Vectorxj
  • 2017-06-03 19:33:24
  • 361

【BZOJ4652】循环之美(莫比乌斯反演,杜教筛)

题解到底在求什么呢。。。 首先不管他KK进制的问题啦,真是烦死啦所以,相当于有一个分数ij\frac{i}{j} 因为值要不相等 所以有i⊥ji \perp j,也就是gcd(i,j)=1gcd...
  • qq_30974369
  • qq_30974369
  • 2018-01-17 10:01:41
  • 94

【UOJ221】【BZOJ4652】【NOI2016】循环之美(莫比乌斯反演,杜教筛)

Description 牛牛是一个热爱算法设计的高中生。在他设计的算法中,常常会使用带小数的数进行计算。牛牛认为,如果在 k 进制下,一个数的小数部分是纯循环的,那么它就是美的。现在,牛牛想知道:对...
  • hhaannyyii
  • hhaannyyii
  • 2018-03-30 22:12:48
  • 86

[杜教筛] 51Nod 1238 最小公倍数之和 V3

比最大公约数之和要难搞一些 吉丽博客传送门:http://jiruyi910387714.is-programmer.com/posts/195270.html 这道题两个要点 首先 ∑1 ...
  • u014609452
  • u014609452
  • 2017-01-26 22:45:50
  • 654

spring学习笔记(持续更新)

1.Spring的核心机制 依赖注入:相当于控制反转,spring中创建被调用者的工作不再由调用者完成,称为控制反转,创建被调用者实例的工作由spring容器完成,然后注入调用者,称为依赖注入。 ...
  • kiss_the_sun
  • kiss_the_sun
  • 2011-05-11 19:59:00
  • 1568

莫比乌斯反演套路1_线性筛法

线性筛法是O(n),不然它就不叫线性。
  • Cold_Chair
  • Cold_Chair
  • 2017-01-20 22:22:15
  • 442
    别人
    aziint Dangxingyu Joker Azreal_Death call_me_std
    dj vanilla ldy wsyzh
    个人资料
    持之以恒
    等级:
    访问量: 4665
    积分: 407
    排名: 12万+
    最新评论