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

,求

为质数的

的对数,或者

等于1的

的对数。
(2)已知

和

,求

为质数的

的对数,或者

等于1的

的对数。
(3)已知

,求

的对数。
(4)已知

和

,求

的对数。
上面的问题其实都可以用莫比乌斯反演来解,时间复杂度都还可以。关于莫比乌斯反演,前面的文章中有详细介绍。
接下来,我们看一个关于莫比乌斯反演稍微复杂一点的题目。
题目:http://acm.fzu.edu.cn/problem.php?pid=2106
题意:给一个长度小于20的整数数组a[],有另外一个数组b[],满足条件

,求使得条件

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

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

和

。

为满足条件

的对数

为满足条件

的对数
那么,很明显有

,注意这里的

为

公共因子。
而

,反演后得到

在这里我们只考虑

为无平方因子的数即可。










