[探究] $mu$函数的性质应用

参考的神仙An_Account的blog,膜一下。

其实就是一类反演问题可以用(mu)函数的性质直接爆算出来。

然后其实性质就是一个代换:

[sum_{d|n}mu(d)=[n=1] ]

问题一:求

[sum_{i=1}^nsum_{j=1}^m[i perp j] ]

……然而其实就是

[sum_{i=1}^nsum_{j=1}^msum_{d|gcd(i,j)}mu(d) ]

考虑(d|gcd(i,j))就是(d|i,d|j),于是可以枚举(d)

[sum_{d=1}^{min(n,m)}mu(d)cdot lfloorfrac{n}{d} floorcdot lfloorfrac{m}{d} floor ]

这东西就可以直接分块。

问题二:求

[sum_{i=1}^nsum_{j=1}^m[gcd(i,j)=k] ]

然而根据一个定理:

[gcd(i,j)=kLongrightarrowgcd(frac{i}{k},frac{j}{k})=1 ]

于是就变成了:

[sum_{i=1}^{lfloorfrac{n}{k} floor}sum_{j=1}^{lfloorfrac{m}{k} floor}[i perp j] ]

问题三:求

[sum_{i=1}^nsum_{j=1}^m[gcd(i,j)=k],kin m{Prime} ]

我们考虑现在的柿子其实长这样:

[sum_{kin m{Prime}}sum_{d=1}^{min(lfloorfrac{n}{k} floor,lfloorfrac{m}{k} floor)}mu(d)cdot lfloorfrac{n}{kd} floorcdot lfloorfrac{m}{kd} floor ]

一个思想就是不断把重复求和的东西提到前面去。我们发现似乎带有(kd)的几项被重复求和,效率很低。同时因为(O(kd)=O(n)),所以改成先枚举(kd):

[egin{aligned}p=kd\ sum_{p=1}^{min{(n,m)}}end{aligned}lfloorfrac{n}{p} floorcdot lfloorfrac{m}{p} floorsum_{d|p}mu (d) ]

然后显然后面的那个(sum)是可以预处理的,于是就还是(O(sqrt n))的分块。

后面的择日应该会学一学= =?

原文地址:https://www.cnblogs.com/pks-t/p/11748702.html