0
点赞
收藏
分享

微信扫一扫

莫比乌斯反演与最大公约数


在数论中,有很多题目都与莫比乌斯反演有关,最典型的就是最大公约数。比如你可以见到如下常见问题。


(1)已知

莫比乌斯反演与最大公约数_数组

,求

莫比乌斯反演与最大公约数_时间复杂度_02

为质数的

莫比乌斯反演与最大公约数_莫比乌斯反演_03

的对数,或者

莫比乌斯反演与最大公约数_时间复杂度_02

等于1的

莫比乌斯反演与最大公约数_莫比乌斯反演_03

的对数。


(2)已知

莫比乌斯反演与最大公约数_时间复杂度_06


莫比乌斯反演与最大公约数_莫比乌斯反演_07

,求

莫比乌斯反演与最大公约数_时间复杂度_02

为质数的

莫比乌斯反演与最大公约数_莫比乌斯反演_03

的对数,或者

莫比乌斯反演与最大公约数_时间复杂度_02

等于1的

莫比乌斯反演与最大公约数_莫比乌斯反演_03

的对数。


(3)已知

莫比乌斯反演与最大公约数_莫比乌斯反演_12

,求

莫比乌斯反演与最大公约数_数组_13

的对数。


(4)已知

莫比乌斯反演与最大公约数_时间复杂度_06


莫比乌斯反演与最大公约数_莫比乌斯反演_07

,求

莫比乌斯反演与最大公约数_时间复杂度_16

的对数。


上面的问题其实都可以用莫比乌斯反演来解,时间复杂度都还可以。关于莫比乌斯反演,前面的文章中有详细介绍。


 

接下来,我们看一个关于莫比乌斯反演稍微复杂一点的题目。

 

题目:http://acm.fzu.edu.cn/problem.php?pid=2106


题意:给一个长度小于20的整数数组a[],有另外一个数组b[],满足条件

莫比乌斯反演与最大公约数_莫比乌斯反演_17

,求使得条件    

莫比乌斯反演与最大公约数_数组_18

成立的数组b[]的个数,结果对

莫比乌斯反演与最大公约数_莫比乌斯反演_19

取余。


分析:依据前面学的莫比乌斯反演,我们先设两个函数

莫比乌斯反演与最大公约数_莫比乌斯反演_20


莫比乌斯反演与最大公约数_时间复杂度_21



    

莫比乌斯反演与最大公约数_莫比乌斯反演_20

为满足条件

莫比乌斯反演与最大公约数_时间复杂度_23

的对数


    

莫比乌斯反演与最大公约数_时间复杂度_21

为满足条件

莫比乌斯反演与最大公约数_时间复杂度_25

的对数


     那么,很明显有

莫比乌斯反演与最大公约数_时间复杂度_26

,注意这里的

莫比乌斯反演与最大公约数_时间复杂度_27


莫比乌斯反演与最大公约数_莫比乌斯反演_28

公共因子。


     而

莫比乌斯反演与最大公约数_莫比乌斯反演_29

,反演后得到

莫比乌斯反演与最大公约数_数组_30


     在这里我们只考虑

莫比乌斯反演与最大公约数_数组_31

为无平方因子的数即可。




举报

相关推荐

0 条评论