狄利克雷卷積
定義:如果函數 \(F,f,g\) 滿足:
\(F(n)=\sum\limits_{d|n}f(d)g(\frac{n}{d})\)
則 \(F\) 是 \(f\) 和 \(g\) 的狄利克雷卷積,記作 \(F=(f∗g)\),或 \(F(n)=(f∗g)(n)\)
顯然,狄利克雷卷積滿足交換律和分配律。
常見的完全積性函數
1.常函數 \(I(n)=1\)
2.恆等函數 \(id(n)=n\)
3.單位函數 \(\varepsilon(n)=[n=1]\) 又叫單位元
性質1:
-
\(f∗ε=f\) (任何函數*單位元=本身)
-
證明:
\((f∗ε)(n)=\sum \limits_{d|n} f(d)ε(\frac{n}{d})\)
所以當且僅當 \(\varepsilon(\frac{n}{d})=1\) 時,后面式子不為 \(0\) ,即 \(d=n\) 時,所以 \((f*\varepsilon)(n)=f(n)\)
■
性質2:
-
\(μ∗I=ε\) 即 \(\sum\limits_{d|n} \mu(d) = [n==1]\)
-
證明:
當 \(n=1\) 時,\(\mu(1)=\varepsilon(1)=1\)
需要證明的是當 \(n>1\) 時,\(\sum\limits_{d|n} \mu(d) =0\)
首先將 \(n\) 進行質因數分解,即 \(n=p_1^{a_1}*p_2^{a_2}....*p_n^{a^n}\)
因為當且僅當 \(n\) 中質因數的冪次都為 \(1\) 時,\(\mu(n)\) 才有值,所以我們不妨直接將指數去掉變為 \(n=p_1*p_2...p_n\) ,此時問題就變為了在 \(n\) 個質數中選 \(k\) 個的方案數再*上對應的權值,用式子表示出來就是:
\[\sum\limits_{d|n} \mu(d)=\sum\limits_{k=0}^{n} C_n^k (-1)^k=\sum\limits_{k=0}^n C_n^k(-1)^k(1^{n-k}) \]因為二項式定理:
\[(a+b)^n=\sum\limits_{k=0}^n C_n^k a^k b^{n-k} \]所以
\[\sum\limits_{k=0}^n C_n^k(-1)^k(1^{n-k})=((-1)+1)^n=0 \]■
性質3:
-
\(\varphi*I=id\) 即 \(\sum\limits_{d|n} \varphi(d)=n\)
-
證明:
\[n=\sum\limits_{i|n}\sum\limits_{j=1}^n [gcd(j,n)=i] \\ =\sum\limits_{i|n}\sum\limits_{j=1}^{\frac{n}{i}}[\gcd(j,\frac{n}{i})=1] \\ =\sum\limits_{i|n}\varphi(\frac{n}{i})=\sum\limits_{i|n}\varphi(i) \]第一步轉化是等價於將 \(n\) 個數按照 \(\gcd\) 分類,個數和為 \(n\) 。第二步是因為 \(\gcd(kx,ky)=k\),所以 \(\gcd(x,y)\) 於是可以把這個 \(k\) 除出去。
■
性質4:
\(\mu*id=\varphi\) 即 \(\varphi(n)=\sum\limits_{d|n} \mu(d)*(n/d)\)
其實這個直接用卷積代換就可以證明了:
-
證明:
由之前的性質可以知道:\(\mu*I=\varepsilon , \ \ id=\varphi*I\)
所以可以推出:\(\mu*id=\mu*\varphi*I=(\mu*I)*\varphi=\varepsilon*\varphi=\varphi\)
■
性質5:
\(d=I*I\)
-
證明:
直接定義拆開:\(d(n)=\sum\limits_{d|n} 1\)
就是約數的定義了呀。
■
性質6
\(\sigma=I*id\)
-
證明
老定義證明了。。\(\sigma(n)=\sum\limits_{d|n} 1*id(d)\)
顯然。
■
性質7
\(\mu*d=I\)
還是直接卷積代換吧:
-
證明:
\(d=I*I\)
\(\mu*d=\mu*I*I=(\mu*I)*I=\varepsilon*I=I\)
■
上面的證明大部分都是照着這位大佬的博客打的,如果講的不清楚可以看一看,寫的很好!
上面性質的匯總:
\(d=I*I\)
\(\sigma=I*id\)
\(\mu*id=\varphi\)
\(\varphi*I=id\)
\(μ∗I=ε\)
\(f∗ε=f\)
莫比烏斯反演
聽過許多次也考了好幾次了,被教練叫過來學了。
首先一切的一切,得從莫比烏斯函數講起:
定義函數 \(\mu(x)\) (莫比烏斯函數)。
\(\mu(x)\) 只有 \(3\) 種取值,\(-1,0,1\) 分別表示:
\(-1\) : \(x\) 的質因子的最高冪次為 \(1\) ,並且有奇數個質因子。
\(0\) : \(x\) 的質因子的最高冪次 \(\geq1\)
\(1\) : \(x\) 的質因子的最高冪次為 \(1\) ,並且有偶數個質因子。
簡單來說就是:當 \(x\) 的質因子最高冪次為 \(1\) 時,\(\mu(x)=(-1)^k\) ,\(k\) 表示質因子個數。
否則 \(\mu(x)=0\)
並且規定 \(\mu(1)=1\)
關於容斥系數:
其實如果你懂歐拉函數(\(\phi(x)\))容斥的推導過程:
即:\(\varphi(n) = n(1-\frac{1}{p_1}-\frac{1}{p_2}-\cdots+\frac{1}{p_1p_2}+\frac{1}{p_1p_3}+···+\frac{1}{p_{m-2}p_{m-1}}-\frac{1}{p_1p_2p_3}-···)\)
你會發現:當分母有奇數個質數的時候,前面的符號為 \(-\) ,偶數個質數的時候,符號為 \(+\) 。(雖然剛剛好與莫比烏斯函數的取值相反)
但是你也可以大概懂得為什么莫比烏斯函數被叫做容斥系數,許多時候計算關於因數的一些東西的時候,莫比烏斯函數就可以讓容斥變得簡單許多。
莫比烏斯函數的一些小性質:
借用別的大佬的一段話:
首先,我們可以先明確一點,莫比烏斯函數並不是什么很高大上的東西,它其實只是一個由容斥系數所構成的函數。
1. 是個積性函數
這一點感性理解就好了,也是 \(\mu(x)\) 可以線性篩 \(\Theta(n)\) 求的基礎。
2.聯系歐拉函數
對於任意的正整數 \(n\) ,\(\sum\limits_{d|n} \frac{\mu(d)}{d}=\frac{\varphi(n)}{n}\)
很常用的一個性質
對於任意的正整數 \(n\) :\(\sum\limits_{d|n} \mu(d) = [n==1]\) 這個下面的許多推導都會用到。證明見狄利克雷卷積性質 2。
線性篩莫比烏斯函數:
直接給出代碼好了,畢竟挺好理解的。
inline void Init_mu(int lim){
mu[1]=1;
for(register int i=2;i<=lim;++i){
if(!isprime[i]) prime[++tot]=i,mu[i]=-1;
for(register int j=1;j<=tot&&prime[j]*i<=lim;++j){
isprime[i*prime[j]]=true;
if(i%prime[j]==0) break;
else mu[i*prime[j]]=-mu[i];
}
}
return;
}
莫比烏斯反演
-
定義兩個函數 \(g(n)\) 和 \(f(n)\)
莫比烏斯反演的因數形式
-
莫比烏斯反演定理:對於這兩個定義在非負整數幾何上的兩個函數並且滿足:
\[g(n)=\sum_{d|n} f(d) \]則:
\[f(n)=\sum_{d|n} \mu(d) g(\frac{n}{d}) \] -
證明:(先展示不用卷積的證明方法)
1.將 \(f(n)\) 拆開
2.因為 \(d\) 和 \(\frac{n}{d}\) 是成對出現的,這個式子還可以變為:
3.因為上面 \(\sum_{d|n} \mu(d) = [n==1]\) 所以當且僅當\(\frac{n}{k}==1\) 時,才會用值,即\(k==n\) 時,所以
最后給出整個過程:
■
當然還可以用狄利克雷卷積更輕松地證明:
-
證明:
給出的條件即 \(g=I*f\)
證明的為 \(f=\mu*g\)
因為 \(f*\varepsilon=f=\mu*g\)
又因為 \(\mu*I=\varepsilon\)
所以 \(f*\mu*I=\mu*g\)
同時消去 \(\mu\) 即 \(f*I=g\)
■
另外一種形式(莫比烏斯反演的倍數形式):
- 還是兩個函數 \(g(n)\) 與 \(f(n)\)
如果
簡單說就是倍數之和。
則:
下面是照搬 OIwiki 上面的證明:
做的一些題目:
「雅禮day2」最大公約數gcd
題目大意:
有 \(n\) 個正整數 \(x_1…x_n\) ,初始時狀態均為未選。有 \(m\) 個操作,每個操作給定一個編號 \(i\) ,將\(x_i\) 的選取狀態取反。每次操作后,你需要求出選取的數中有多少個互質的無序數對。\(n \leq 10^5 \ \ m\leq 10^5 \ \ x_i\leq10^5\)
做題的初始思路:
每次求完因數過后的 bitset 求並,但是這樣的復雜度肯定是爆炸的。
所以我們只考慮每次插入和刪除所帶來的貢獻:
所以設插入的元素為 \(t\) ,每次帶來的貢獻就是下式:
察覺到,后面的Sigma實質上就是有當前因子 \(d\) 的 \(a_i\) 的個數,所以每次維護一個因數的集合大小就可以了。
P2257 YY的GCD
神犇 YY 虐完數論后給傻× kAc 出了一題
給定 \(N, M\),求 \(1 \leq x \leq N\),\(1 \leq y \leq M\) 且 \(\gcd(x, y)\) 為質數的 \((x, y)\) 有多少對。
直接開始推式子:
題目要求的式子:
設 \(g(d)\) 為 \(\gcd(i,j)=d\) 的個數,\(f(d)\) 為 \(\gcd(i,j)=d\) 或 \(d\) 的倍數的個數,用式子表示以下就是:
這個式子就是上面莫比烏斯反演的另一種形式,於是:
答案要求的式子可以變成:
換一種形式表達上面的式子,也就是枚舉倍數再看質因數:
后面的Sigma可以先線性篩處理 \(\mu(i)\) 然后 \(\Theta(n\log\log n)\) 處理和得出(類似埃氏篩)。然后合在一起的Sigma前半部分整除分塊后半部分前綴和統計就好了。
P6810 「MCOI-02」Convex Hull 凸包
計算 \(\sum\limits_{i=1}^n\sum\limits_{j=1}^m d(i)*d(j)*d(\gcd(i,j))\)
首先經典的將枚舉的換為 \(\gcd\) ,式子就變為:
再將 \(d\) 除出去。
然后將 \([\gcd(i,j)]\) 代換掉。
然后再交換枚舉順序,先枚舉 \(t\)
右邊可以再除一個 \(t\):
不妨將 \(dt\) 換成 \(x\)
可以把 \(d(d)\) 丟進下一個Sigma,在變為枚舉 \(x\) :
因為 \(d*\mu=I\) (這點可以見上面的性質 \(7\))
所以整個式子直接變為:
后面的兩個式子可以在線性篩因子個數后 \(\Theta(n)\) 求出。
P1829 [國家集訓隊]Crash的數字表格 / JZPTAB
計算 \(\sum\limits_{i=1}^{n}\sum\limits_{j=1}^{m} {lcm(i,j)}\)
解釋見下文,先直接寫式子:
①:是根據 \(lcm\) 的定義轉換的。
②:交換枚舉順序。
③:將枚舉的 \(\gcd\) 提出,右邊實際上是除的 \(d^2\) 所以要乘一個 \(d\)
④:把 \(d\) 提出去
⑤:將 \([gcd(i,j)==1]\) 用莫反轉換為 $\sum\limits_{k|\gcd(i,j)} \mu(k) $
⑥:在轉換枚舉順序,將 \(k\) 提前。
⑦:讓他們都乘一個 \(k\) ,也就是強制擁有一個 \(k\) 的因數,這樣就可以直接省去一個判斷 \(k|\gcd(i,j)\) 的條件
⑧:將 \(k^2\) 提出,預處理出 \(\mu(k)*k^2\) 的前綴和后二次整除分塊可以求出答案。
復雜度:\(\Theta(n^{\frac{3}{4}})\)
CF900D Unusual Sequences
求解 \(\gcd=x\) 和為 \(y\) 的數列有多少種
首先,當 \(x \nmid y\) 時,是無解的。
所以不妨將當前的所有數都除 \(x\) ,問題也就轉化為了給定和為 \(\frac{y}{x}\) ,所有數的 \(\gcd=1\) 的方案總數。
姑且先不考慮 \(\gcd=1\) 的條件:
設 \(g(x)\) 為若干個正整數和為 \(x\) 方案數:
用隔板法+二項式反演 很容易得出:$g(x)=\sum\limits_{i=1}^x \dbinom{x-1}{i-1}=\sum\limits_{i=1}^x \dbinom{x-1}{i-1} 1^{i-1} *1{x-i}=2{x-1} $
那么加上 \(\gcd=1\) 的條件。
設 \(f(x)\) 為若干個數和為 \(x\) ,它們的 \(\gcd=1\) 的方案數。
顯然:\(g(x)=\sum\limits_{d|x} f(d)\) (也就是每一種正整數解都可以由它的最簡形式(即 \(\gcd=1\) 的形式)擴大若干倍轉化過來。
根據莫比烏斯反演的因數形式可以得到:
\(f(x)=\sum\limits_{d|x} \mu(\frac{x}{d}) g(x)\)
這個式子,因為 \(x\) 為 \(10^9\) 級別的,無法用線性篩快速求解 \(\mu\) 函數,那么就直接 \(\sqrt{x}\) 直接定義法求得了,但是時間卡得比較緊,可以再加一個線性篩只用質數,這樣復雜度就是\(\Theta(\frac{\sqrt{x}}{\log x})\),\(g(x)\) 也珂以通過快速冪快速求得。
總體復雜度應該是 \(\Theta(\sqrt{m}*(\frac{\sqrt{m}}{\log m}+\log m))=\Theta(\frac{m}{\log m}+\sqrt{m}\log m)\) CF神機上應該是穩穩跑過得。
(注意 \(\mu(x)\) 為負數時的處理)
