莫比乌斯反演学习笔记

狄利克雷卷积

对于两个数论函数 $f(x)$ 和 $g(x)$,他们的卷积结果 $h(x)$ 定义为

$h(x)=\sum_{d|x}^{}f(d)g(\frac{x}{d} )=\sum_{ab=x}^{}f(a)g(b)  $

即 $h=f*g$

满足交换律,结合律,分配律。

莫比乌斯函数

 

$$\mu (n)=\left\{\begin{matrix}1  &n=1 \\0  & n含有平方因子\\(-1)^{k}   & k为n的本质不同因子个数\end{matrix}\right.$$

首先,他是一个积性函数,也就是说,它可以通过线性筛法预处理出来

void pre(){
    mu[1]=1;
    for(int i=2;i<N;i++){
        if(!vis[i]) mu[i]=-1,p[++tot]=i;//p既是第i个素数,也是i的最小质因子
        for(int j=1;j<=tot&&i<N/p[j];j++){
            vis[i*p[j]]=1;
            if(i%p[j]==0) {    mu[i*p[j]]=0;break;}
            else mu[i*p[j]]=-mu[i];
        }
    }
}
View Code

 

 其单位元是 $\epsilon =[n=1]$。

单位元是指,$\mu *\epsilon =\mu $

性质:

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

即 $\sum_{d|n}^{}\mu (d)=\epsilon  (n)$,$\mu *1=\epsilon $

因此,当我们遇到互质问题时

$[gcd(i,j)=1]=\sum_{d|gcd(i,j)}^{}\mu (d) $ (非常重要)

莫比乌斯反演例题

例一

$\sum_{i=1}^{n}\sum_{j=1}^{m}[gcd(i,j)=1]  (n<m)$

通过上文提到的非常重要的性质,我们可以把它变成如下形式

$\sum_{i=1}^{n}\sum_{j=1}^{m}\sum_{d|gcd(i,j)}^{}\mu (d) $

然后就是经典的套路——调整枚举顺序

具体来说,我们把d提到前面去,则i和j均为d的倍数

$\sum_{d=1}^{\min(n,m)}\mu (d)*\left \lfloor \frac{n}{d} \right \rfloor *\left \lfloor \frac{m}{d} \right \rfloor$

预处理出 $\mu$ 地前缀和,然后用数论分块做。

例二

$\sum_{i=1}^{n}\sum_{j=1}^{m}[gcd(i,j)=k]  (n<m)$

其实和上一题一样,只不过要稍稍转化一下,套路地同时除以k即可

 $\sum_{i=1}^{\left \lfloor \frac{n}{k}  \right \rfloor } \sum_{j=1}^{\left \lfloor \frac{m}{k}  \right \rfloor }[gcd(i,j)=1] $

然后就和上一题一样

 

posted @ 2023-07-06 10:01  DPD  阅读(17)  评论(0)    收藏  举报