莫比乌斯函数与反演 学习笔记

莫比乌斯函数与反演

0 前言

建议先看这篇比较简略的文章(有大概了解)

莫比乌斯函数_为最后的荣光的博客-CSDN博客

再根据个人情况食用本篇博客

1 莫比乌斯函数

1 1 定义

首先对 \(n\) 唯一分解

唯一分解

唯一分解定理一篇就够了_求唯一分解式程序_JdiLfc的博客-CSDN博客

唯一分解定理及其证明 - 夶 - 博客园 (cnblogs.com)

\[n=p_1^{k_1}p_2^{k_2}\dots p_m^{k_m},其中p_i为n的互异质因子,\forall i,k_i为正整数 \tag{0} \]

\[\mu(n)= \begin{cases} 1,\quad n=1\\ 0, \quad \exist i,k_i\neq1\\ (-1)^m,\quad \forall i, k_i=1 \end{cases} \tag{1} \]

1 2 性质

1 2 1 性质一

莫比乌斯函数是积性函数

积性函数

(在这里只需要知道定义基本上就🆗了)

积性函数的性质及证明 + 线性筛_新熊君的博客-CSDN博客

积性函数 - Wuweizheng - 博客园 (cnblogs.com)

积性函数与线性筛 - 租酥雨 - 博客园 (cnblogs.com)

\(\mu(nm)=\mu(n)\mu(m)\)

这个证明过于显然了点

  1. \(m=1\),所以\(\mu(mn)=\mu(1)\mu(n)=\mu(n)\)

    因为\(\mu(m)=\mu(1)=1\)\(\mu(m)\mu(n)=\mu(mn)\)成立

  2. \(gcd(n,m)=1\)时,显然 \(m,n\) 各自互异质因子的并集= \(mn\) 的互异质因子

    并且无交集(因为\(m,n\)互质)

    所以 \(m\) 互异质因子个数+ \(n\) 互异质因子个数 = \(mn\) 的互异质因子个数

    \(\mu(m)\mu(n)=(-1)^{s_m}(-1)^{s_n}=(-1)^{s_m+s_n}=\mu(mn)\)成立

    其中 \(s_n\) 表示 \(n\) 互异质因子的个数

1 2 2 性质二

对于任意正整数 \(n\) ,有:

\[\sum_{d|n}\mu(d)= \begin{cases} 1,\quad n=1\\ 0, \quad n\neq1 \end{cases} \tag{2} \]

证明:

  1. \(n=1\) 时,\(\sum_{d|n}\mu(d)=\mu(1)=1\)

  2. \(n\neq1\) 时,\(\sum_{d|n}\mu(d)=\sum_{i=0}^m C_m^i(-1)^i=0\)

    为什么呢?

    首先对 \(n\) 唯一分解 (查看\((0)\)

    \(d=p_1^{q_1}p_2^{q_2}\dots p_m^{q_m}\),其中 \(\forall 1\leq i\leq m, 0\leq q_i\leq k_i\)

    \(\exist i,q_i \geq 2\) 时,\(\mu(d)=0\)

    因此我们只需要考虑只存在 \(q_i=1\space or \space 0\) 的情况

    \(s=\sum_{i=1}^m[q_i\neq0]\)

    那么\(\mu(d)=(-1)^s\)

    这样的 \(d\) 显然只有 \(C_m^s\)

    解释:

    因为当 \(d\)\(s\) 个互异质因子的时候

    \(s\) 个质因子显然是 \(n\)\(m\) 个互异质因子之中

    因此 \(d\) 就是从 \(m\) 个数中选 \(s\) 个数(有区别)的方案数

    即组合数\(C_{m}^s\)

    虽然是从0开始,但不至于连组合数是什么都不知道吧

    因此,现在我们可以得出:

    \(\sum_{d|n}\mu(d)=\sum_{s=0}^{m}C_m^s(-1)^s\)

    根据二项式定理\(\sum_{d|n}\mu(d)=\sum_{s=0}^{m}C_m^s(-1)^s=0\)

    二项式定理

    【高中数学基础课】二项式定理 - 知乎 (zhihu.com)

    emmm还是只看公式就基本上🆗了反正我们是信息竞赛又不是数学竞赛

    不过要是有dalao能把证明看懂的话就orz

    (但是这好像是高中数学的知识,初三狗表示我不会)

1 3 求解

由于\(\mu(n)\) 是积性函数,所以可以用线性筛法在\(O(n)\)内完成

不知道的看积性函数

void get_mu(ll n){
    mu[1]=1;// 存放 莫比乌斯函数;
    //isp[] 存放 是否是质数
    //pri[]  存放  质数 
    for(int i=2;i<=n;i++){
        if(!isp[i]) {
            pri[++cnt]=i;
            mu[i]=-1;
        }
        for(int j=1;j<=cnt&&i*pri[j]<=n;j++){
            isp[i*pri[j]]=1;
            if(i%pri[j]==0){
                mu[i*pri[j]]=0;
                break;
            }//也可以直接break 因为里面本来存的就是0 
            else mu[i*pri[j]]=-mu[i];            
        }        
    } 
}

1 4 *超级实用的“公式”

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

证明:

根据性质二\(\sum_{d|n}\mu(d)=[n=1]\)

\(gcd(i,j)\)带入上式\(n\)

得到\(\sum_{d|gcd(i,j)}\mu(d)=[gcd(i,j)=1]\)

2 莫比乌斯反演

2 1 公式

\[f(n)=\sum_{d|n}g(d)\Rightarrow g(n)=\sum_{d|n}f(\frac{n}{d})\mu(d) \]

2 2 证明

2 3 变形

2 3 1 形式一(倍数形式)

\[f(i)=\sum_{d=1}^{\lfloor \frac{n}{i} \rfloor}g(di)\Rightarrow g(i)=\sum_{d=1}^{\lfloor \frac{n}{i} \rfloor}f(di)\mu(d) \]

证明:

(和一般形式类似)

\(g(i)=\sum_{d=1}^{\lfloor \frac{n}{i} \rfloor}f(di)\mu(d)\) 带入前式

\[f(i)=\sum_{d=1}^{\lfloor\frac{n}{i}\rfloor}g(di) \]

\[f(i)=\sum_{d=1}^{\lfloor \frac{n}{i} \rfloor}\sum_{d_1=1}^{\lfloor \frac{n}{i} \rfloor}f(dd_1i)\mu(d_1) \]

\(T=dd1\),则:

\[f(i)=\sum_{T=1}^{\lfloor \frac{n}{i} \rfloor}\sum_{d=1}^{\lfloor \frac{n}{i} \rfloor}f(Ti)\mu(\frac{T}{d}) \]

\[f(i)=\sum_{T=1}^{\lfloor \frac{n}{i} \rfloor}f(Ti)[\sum_{d=1}^{\lfloor \frac{n}{i} \rfloor}\mu(\frac{T}{d})] \]

\[f(i)=\sum_{T=1}^{\lfloor \frac{n}{i} \rfloor}f(Ti)[\sum_{d_1|T}\mu(d_1)] \]

根据莫比乌斯函数的性质二

\[\sum_{d|n}\mu(d)= \begin{cases} 1,\quad n=1\\ 0, \quad n\neq1 \end{cases} \]

\(T=1\)时,\(\sum_{d_1|T}\mu(d_1)=1\)\(f(i)[\sum_{d_1|T}\mu(d_1)]=f(i)\mu(1)=f(i)\)

\(T\neq1\)时,\(\sum_{d_1|T}\mu(d_1)=0\)\(f(Ti)[\sum_{d_1|T}\mu(d_1)]=0\)

综上,

\[f(i)=\sum_{T=1}^{\lfloor \frac{n}{i} \rfloor}f(Ti)[\sum_{d_1|T}\mu(d_1)]=f(i) \]

2 3 2 形式二(整除形式)

\[f(i)=\sum_{d|i}g(d)\Rightarrow g(i)=\sum_{d|i}f(\frac{i}{d})\mu(d) \]

就是一般形式

2 4 性质

\[f(n)是积性函数\Leftrightarrow g(n)是积性函数 \]

3 应用

3 1 [HAOI2011]Problem b

3 1 1 题目大意

求当 \(i∈[a,b],j∈[c,d]\),满足\(gcd(i,j)=k\)的数对\((i,j)\)的个数

\[ans=\sum_{i=a}^{b}\sum_{j=c}^{d}[gcd(i,j)=k] \]

3 1 2 SOLUTION

定义函数\(f\)

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

显然\(ans\)可以由函数 \(f\) 容斥得到

\(ans=f(c,d)−f(a−1,d)−f(b,c−1)+f(a−1,c−1)\)

现在考虑怎么求\(f\)

根据1 1 4*超级实用的公式可得

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

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

枚举\(d'=\frac{d}{gcd}\)

\[f(n,m)=\sum_{d=1}^{min(\lfloor\frac{n}{k}\rfloor,\lfloor\frac{m}{k}\rfloor)}\mu(d)g(kd) \]

\[g(d)表示i[1,n],j[1,m]满足d|gcd(x,y)的对数 \]

\[显然可以知道g(d)=\lfloor\frac{n}{d}\rfloor\lfloor\frac{m}{d}\rfloor \]

\[f(n,m)=\sum_{d=1}^{min(\lfloor\frac{n}{k}\rfloor,\lfloor\frac{m}{k}\rfloor)}\mu(d)\times\lfloor\frac{n}{kd}\rfloor\times\lfloor\frac{m}{kd}\rfloor \]

浅谈莫比乌斯反演 - B1ueC4t 的博客 - 洛谷博客 (luogu.com.cn)

莫比乌斯反演-让我们从基础开始 - An_Account 的博客 - 洛谷博客 (luogu.com.cn)

莫比乌斯反演 - OI Wiki (oi-wiki.org)

莫比乌斯函数及其应用 - ZAP-Queries + Problem b + GCD_莫比乌斯函数应用_njuptACMcxk的博客-CSDN博客

就可以直接计算了

就是这么简单(才怪)

3 1 3 CODE
#include<bits/stdc++.h>
using namespace std;
const int N=5e4+2;
int T,a,b,c,d,k,mu[N],SumMu[N],pri[N],isp[N],cnt;
int Mobius(int n,int m,int k){//(i[1,n]j[1,m]{[gcd(i,j)=k]})的个数
    if(n>m) swap(n,m);
    n/=k,m/=k; 
    int ans=0;
    for(int i=1,j;i<=n;i=j+1) {
        j=min(n/(n/i),m/(m/i));
        ans+=(SumMu[j]-SumMu[i-1])*(n/i)*(m/i);
    }
    return ans;
}
void Mu(int n);//见模板部分
int main(){
    Mu(N-2);
    ios::sync_with_stdio(false);
    cin.tie(0),cout.tie(0);
    cin>>T;
    while(T--){
        cin>>a>>b>>c>>d>>k;
        cout<<Mobius(b,d,k)-Mobius(b,c-1,k)-Mobius(a-1,d,k)+Mobius(a-1,c-1,k)<<"\n";
    }
    return 0;
}

3 2 「BZOJ2693」jzptab

【BZOJ2693】jzptab - yoyoball - 博客园 (cnblogs.com)

搞半天发现这个模数搞错了。。。。尬住了,,ԾㅂԾ,,

3 3 [BZOJ4407]于神之怒加强版

[BZOJ4407]于神之怒加强版 - 租酥雨 - 博客园 (cnblogs.com)

枚举倍数真的是一个非常常见并且常用的套路啊!!

3 4 51nod1190 最小公倍数之和 V2

3 4 0 前置知识

斐波那契数列
斐波那契数列的部分性质 - 知乎 (zhihu.com)

斐波那契数列(Fibonacci sequence)及相关结论 - 知乎 (zhihu.com)

斐波那契数列的一些性质 - 知乎 (zhihu.com)

【学习笔记】斐波那契数列的简单性质 - changle_cyx - 博客园 (cnblogs.com)

神奇的很

一个小小的性质

\[f_{m+n}=f_{m}f_{n+1}+f_{n}f_{m-1} \]

这个可以用数学归纳法证明

\[f_{m+n+1}=f_{m+n-1}+f_{m+n} \]

\[f_{m+n+1}=(f_{m}f_{n}+f_{n-1}f_{m-1})+(f_{m}f_{n+1}+f_{n}f_{m-1}) \]

\[f_{m+n+1}=f_m(f_n+f_{n+1})+f_{m-1}(f_{n-1}+f_n) \]

\[f_{m+n+1}=f_mf_{n+2}+f_{n+1}f_{m-1} \]

满足公式o( ̄︶ ̄)o

over!

接下来我们可以愉快地切掉看这道题了

3 4 1 题目大意

给定\(m,n\),求\(\sum_{i=m}^nlcm(i,n)\space mod\space 10^9+7\)

3 4 2 SOLUTION

\[\sum_{i=m}^nlcm(i,n)=\sum_{i=m}^n\frac{i\times n}{gcd(i,n)} \]

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

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

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

根据*超级实用的公式

\[=n\sum_{d|n}\sum_{i=\lceil\frac{m}{d}\rceil}^{\lfloor\frac{n}{d}\rfloor}\frac{i}{d}\sum_{t|gcd(i,\frac{n}{d})}\mu(t) \]

由于我们知道:\(d|gcd(a,b)\Rightarrow d|a\space and\space d|b\)

\[=n\sum_{d|n}\sum_{t|\frac{n}{d}}\mu(t)\sum_{i=\lceil\frac{m}{d}\rceil}^{\lfloor\frac{n}{d}\rfloor}i[i|t] \]

\[=n\sum_{d|n}\sum_{t|\frac{n}{d}}\mu(t)\sum_{i=\lceil\frac{m}{td}\rceil}^{\lfloor\frac{n}{td}\rfloor}ti \]

\[=n\sum_{d|n}\sum_{t|\frac{n}{d}}\mu(t)t\sum_{i=\lceil\frac{m}{td}\rceil}^{\lfloor\frac{n}{td}\rfloor}i \]

我们可以发现最后一个sigma显然就是一个等差数列,因此

\[=n\sum_{d|n}\sum_{t|\frac{n}{d}}\mu(t)\times t\times sum(\lceil\frac{m}{td}\rceil,\lfloor\frac{n}{td}\rfloor) \]

\[其中sum(l,r)=\sum_{i=l}^{r}i=\frac{(l+r)(l+r-1)}{2} \]

\(T=td\)

\[=n\sum_{T|n}sum(\lceil\frac{m}{T}\rceil,\lfloor\frac{n}{T}\rfloor)\sum_{t|T}\mu(t)\times t \]

\(f(x)=\sum_{d|x}\mu(d)d\)

\(f(x)\)是积性函数

证明:

\[f(a)f(b)=\sum_{x|a}\mu(x)x\sum_{y|b}\mu(y)y \]

\[=\sum_{x|a}\sum_{y|b}\mu(x)\mu(y)xy \]

因为\(\mu(x)\)是积性函数

\[=\sum_{x|a}\sum_{y|b}\mu(xy)xy \]

\[=\sum_{d|ab}\mu(d)d \]

\[=f(ab) \]

over!

对于一个质数\(p\)

\[f(p^k)=\mu(1)+\mu(p)p+\sum_{i=2}^{k}\mu(p^i)p^i \]

\[=1+(-1)^1p+0\\ =1-p \]

所以若对\(n\)唯一分解

\[n=p_1^{k_1}p_2^{k_2}\dots p_{m}^{k_m} \]

那么

\[f(n)=\prod_{i=1}^m1-p_i \]

那么我们就可以在枚举质因数 \(d\) 的时候直接计算 \(f(d)\)

3 4 3 CODE

好像我当时的代码和上面讲的有点差别

就不放代码了

若想看的话,[BZOJ4407]于神之怒加强版 CODE - _Youngxy - 博客园 (cnblogs.com)

(这是转的zsc985246大佬的code)

4 后话

对于常见配套优化:整除分块 - pengym - 博客园 (cnblogs.com)

最后,我想说莫比乌斯反演-让我们从基础开始 - An_Account 的博客 - 洛谷博客 (luogu.com.cn)这篇博客非常的实用(just tell you the sercet of the common probelms' solution),但是如果想彻底了解的话,我们还是老老实实学吧...( _ _)ノ|

完结撒花❀

★,°:.☆( ̄▽ ̄)/$:.°★

posted @ 2023-05-18 15:55  _Youngxy  阅读(35)  评论(0)    收藏  举报