1. 程式人生 > 遊戲攻略 >《永劫無間》胡桃使用心得

《永劫無間》胡桃使用心得

莫比烏斯反演

前置知識:容斥 整除分塊

參考:莫比烏斯反演 - pengym - 部落格園

莫比烏斯函式

設正整數 \(N\) 按照算術基本定理分解質因數為 \(N=\Pi_{i=1}^m p_i^{c_i}\) ,定義函式:

\[\begin{equation} \mu(N)= \left\{ \begin{array}{lr} 0,&\exist i\in[1,m],c_i>1\\ 1,&m\equiv 0(\bmod 2),\forall i\in[1,m],c_i=1\\ -1,&m\equiv 1(\bmod 2),\forall i\in[1,m],c_i=1\\ \end{array} \right. \end{equation} \]

我們稱 \(\mu(N)\)

為莫比烏斯函式

通俗地講,當 \(N\) 包含相等的質因子時, \(\mu(N)=0\)

\(N\) 的所有質因子各不相同時,若 \(N\) 有偶數個質因子,\(\mu(N)=1\)

​ 若 \(N\) 有奇數個質因子,\(\mu(N)=-1\)

它有一些性質:

  1. 對於任意正整數 \(n\)\(\sum_{d|n}\mu(d)=[n=1]\)

    \([n=1]\) 表示只有當 \(n=1\) 成立時,返回值為 \(1\);否則,值為 \(0\))

簡單地證明一下:

\(n=1\)

時顯然成立

對於 \(n\neq1\) 的情況:

證明一:對於一個 \(p_i\) 強制選或不選,其他隨便,會產生 奇數/偶數 個質因子兩種情況,抵消為 \(0\)

證明二:若 \(d\) 中含 \(p_i^{a_i},a_i>=2\) ,即 \(\mu(d)=0\) 忽略

那麼, \(\mu\) 的取值僅僅與質因數個數有關

\((i)\) \(n\) 有奇數個(\(x\)個)質因數

\(\sum_{d|n}\mu(d)=-1\times(C_x^1+C_x^3+C_x^5...+C_x^x)+(C_x^2+C_x^4+...+C_x^{x-1})\)

又有:\(C_x^y=C_x^{x-y}(y<x)\)

全部抵消

\((ii)\) \(n\) 有偶數個質因數:同理。

  1. 對於任意正整數 \(n\)\(\sum_{d|n}\frac{μ(d)}d=\frac{ϕ(n)}n\)

從略。(不會)

程式實現並不難,我們可以線上性篩素數的程式上略作修改,便可以篩出 \(μ\) 函式

void get_mu(int n)
{
    mu[1]=1;
    for(int i=2;i<=n;i++)
    {
        if(!vis[i]){prim[++cnt]=i;mu[i]=-1;}
        for(int j=1;j<=cnt&&prim[j]*i<=n;j++)
        {
            vis[prim[j]*i]=1;
            if(i%prim[j]==0)break;
            else mu[i*prim[j]]=-mu[i];
        }
    }
 }

莫比烏斯反演

定理\(F(n)\)\(f(n)\) 是定義在非負整數集合上的兩個函式,並且滿足條件:\(F(n)=\sum_{d|n}f(d)\)

那麼存在一個結論:\(f(n)=\sum_{d|n}\mu(d)F(\lfloor \frac nd \rfloor)\)

莫比烏斯反演定理

我們可以通過定義證明它:

\[\sum_{d|n}\mu(d)F(\lfloor \frac nd \rfloor)=\sum_{d|n}\mu(d)\sum_{i|\lfloor\frac nd\rfloor}f(i)=\sum_{i|n}f(i)\sum_{d|\lfloor\frac nd\rfloor}\mu(d)=f(n) \]

它的另外一種形式是:當 \(F(n)\)\(f(n)\) 滿足:\(F(n)=\sum_{n|d}f(d)\)

可以推出:\(f(n)=\sum_{n|d}\mu(\frac dn)F(d)\)

感覺這個式子,可能在莫比烏斯反演中更加好用。

題目

YY的gcd

[POI2007]ZAP-Queries

[SDOI2015]約數個數和

[HAOI2011]Problem b

[洛谷P1829 國家集訓隊]Crash的數字表格