学习笔记 莫比乌斯反演简单整理

写在卸载之前

正在数论只会抄题解的道路上越行越远

正式开始

1.迪利克雷卷积

1)定义新运算\(*\)

注意这里\(*\)不是乘法

\(h,f,g\)都是函数名称

定义 \(h=f*g\)

\[h=f*g=\sum_{d|n}f(d)g(\frac{n}{d})=\sum_{d|n}f(\frac{n}{d})g(d) \]

2)介绍几个函数

\(a(x)\):对于任意\(x\) 都有\(a(x)=1\)

\(b(x)\):对于任意\(x\) 都有\(b(x)=x\)

\(e(x)\):也被称之为单位元函数 对于任意\(x\) 都有\(e(x)=[x=1]\)

乘法存在逆元 迪利克雷卷积也存在逆元

3)逆元

如果对于函数\(f\)存在

\[f*g=e \]

那么我们就认为g为f的逆元

2.莫比乌斯反演

首先介绍一个函数 莫比乌斯函数\(μ\)

ta是\(a(x)=1\)函数的逆元

也就是$$μ*a=e$$

我们使用迪利克雷卷积$$μ*a=\sum_{d|n}μ(d)a(\frac{n}{d})=\sum_{d|n}μ(d)=[n=1]$$

我们可以发现 μ的取值就是

\[μ(n)=\begin{cases} 1,n=1\\ 0,存在一个平方数是n的因子\\ (-1)^m,n存在m个质因子\\ \end{cases} \]

当然 \(μ\)也是一个积性函数

可以使用线性筛求解

int mul[N],prime[N];
bool mark[N];

mul[1]=1;
for(int i=2;i<=n;++i)
{
      if(!mark[i]) {prime[++tot]=i;mul[i]=-1;}
      for(int j=1;j<=tot&&prime[j]*i<=n;++j)
      {
            mark[prime[j]*i]=1;
            if(i%prime[j]==0)
            {
                  mul[prime[j]*i]=0;
                  break;
            }
            else mul[prime[j]*i]=-mul[i];
      }
}

我们接下来来具体化一个式子

\[\sum_{i=1}^{n}\sum_{d|i}μ(d) \]

先枚举了i 再枚举i的所有约数 等于先枚举d再枚举[1,n]范围内的所有倍数

等价于$$\sum_{d=1}^{n}\lfloor{\frac{n}{d}}\rfloorμ(d)$$

从而我们得到了两个结论

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

\[\sum_{i=1}^{n}\sum_{d|i}μ(d)=\sum_{d=1}^n\lfloor{\frac{n}{d}}\rfloorμ(d) \]

我们再来看看这个式子

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

我们使用结论1

\[\sum_{i=1}^n\sum_{j=1}^m\sum_{d|gcd(i,j)}μ(d)\\ =\sum_{i=1}^n\sum_{j=1}^m\sum_{d|i}\sum_{d|j}μ(d)\\ =\sum_{i=1}^n\sum_{d|i}\sum_{j=1}^m\sum_{d|j}μ(d) \]

使用结论2

\[\sum_{i=1}^n\sum_{d|i}\sum_{j=1}^m\sum_{d|j}μ(d)\\ =\sum_{d=1}^n\lfloor{\frac{n}{d}}\rfloor\sum_{d=1}^m\lfloor{\frac{m}{d}}\rfloorμ(d)\\ =\sum_{d=1}^{min(n,m)}\lfloor{\frac{n}{d}}\rfloor\lfloor{\frac{m}{d}}\rfloorμ(d) \]

也就是

\[\sum_{i=1}^n\sum_{j=1}^m\sum_{d|gcd(i,j)}μ(d)\\ =\sum_{d=1}^{min(n,m)}\lfloor{\frac{n}{d}}\rfloor\lfloor{\frac{m}{d}}\rfloorμ(d) \]

这个作为结论3

有了这三个结论

现在我们来做一道板子题

【P2398 GCD SUM】

\[\sum_{i=1}^n\sum_{j=1}^ngcd(i,j)\\ =\sum_{d=1}^nd\sum_{i=1}^n\sum_{j=1}^n[gcd(i,j)=d]\\ =\sum_{d=1}^nd\sum_{i=1}^{\lfloor\frac{n}{d}\rfloor}\sum_{j=1}^{\lfloor\frac{n}{d}\rfloor}[gcd(i,j)=1] \]

使用结论3 也就是

\[\sum_{d=1}^nd\sum_{t=1}^{\lfloor\frac{n}{d}\rfloor}μ(t){\lfloor\frac{\lfloor\frac{n}{d}\rfloor}{t}\rfloor}^2 \]

具体代码的话 【点我领取代码】

posted @ 2021-01-25 22:41  tcswuzb  阅读(136)  评论(0编辑  收藏  举报