11.5 聽課記錄 && 數論函數


FSYo講數論函數 ,Orz


一些數論積性函數

莫比烏斯函數,\(\mu\) 函數

\[\mu= \begin{cases} 1,&n=1\\ (-1)^c,&n=\prod_{i=1}^c p\\ 0,&n=k^2t \qquad (k>1) \end{cases} \]

元函數,\(\varepsilon\) 函數

\[\varepsilon= \begin{cases} 1,&n=1\\ 0,&n\ne1 \end{cases} \]

單位函數,\(id\) 函數

\[id=n \]

恆等函數,\(I\) 函數

\[I=1 \]

歐拉函數,\(\varphi\) 函數

\[\varphi=\sum_{d\leq n}[\gcd(d,n)=1] \]

因子和函數,\(\sigma\) 函數

\[\sigma=\sum_{d\mid n}d \]

約數個數,\(d\) 函數

\[d=\sum_{d\mid n} 1 \]


狄利克雷卷積

\[h=f\ast g \]

\[h(n)=\sum_{d\mid n}f(d)g(\frac nd) \]

兩個積性函數做狄利克雷卷積得到的也是積性函數。


整除分塊

blog

在莫比烏斯反演中廣泛使用,推完的式子中經常出現,可以將 \(O(n)\) 優化至 \(O(\sqrt n)\),如果有多個整除也可以用,例如:

for(int l=1,r=min(n/(n/l),m/(m/l));;){
    //dosomething
    l=r+1;if(l>mn)break;
    r=min(n/(n/l),m/(m/l));
}

另外有個東西是 \(\lfloor\dfrac{\lfloor\dfrac{b}{k}\rfloor}{l}\rfloor=\lfloor\dfrac{{b}}{kl}\rfloor\)

考慮一下 \(\lfloor\dfrac{b}{k}\rfloor\)\(\dfrac{b}{k}\) 對於整除 \(l\) 的區別,\(\dfrac{b}{k}=\lfloor\dfrac{b}{k}\rfloor+\{\dfrac{b}{k}\}\),顯然后面的小數對於整除 \(l\) 是沒有影響的,所以就有 \(\lfloor\dfrac{\lfloor\dfrac{b}{k}\rfloor}{l}\rfloor=\lfloor\dfrac{\dfrac{b}{k}}{l}\rfloor\) 了。


神秘的知識

一些數論函數的卷積

\(I\ast I=d\)

\(I\ast id=\sigma\)

\(\varepsilon\ast I_k=I_k\)


\(d(ij)=\sum\limits_{x\mid i}\sum\limits_{y\mid j}[\gcd(x,y)=1]\)

考慮枚舉 \(xy\)\(ij\) 的約數,視為 \(\prod\limits^tp_i^{k_i}\) 那么每個 \(p_i^{k_i}\) 應保證只會被一種方式枚舉到。

我們規定 \(k_i\)\(p_i\) 優先在 \(x\) 中選,假設 \(x\)\(p_i\) 的個數為 \(c\),那么 \(k_i\le c\) 時,只有 \(x\) 中被選到了,當 \(k_i>c\)\(x\) 中被選完,剩下的在 \(y\) 中選,我們把\(x\) 中被選完,\(y\) 中選 \(d\)映射到只在 \(y\) 中選 \(d\),於是此時 \(\gcd(x,y)=1\),也就是式子中的枚舉方法是正確的。


\(\varphi\ast I=id\)

\(n=\sum\limits_{d\mid n}\varphi(d)\).

考慮這樣的分數約分:

\[\frac{1}{12},\frac{2}{12},\frac{3}{12},\frac{4}{12},\frac{5}{12},\frac{6}{12},\frac{7}{12},\frac{8}{12},\frac{9}{12},\frac{10}{12},\frac{11}{12},\frac{12}{12}\\ \frac{1}{12},\frac{1}{6},\frac{1}{4},\frac{1}{3},\frac{5}{12},\frac{1}{2},\frac{7}{12},\frac{2}{3},\frac{3}{4},\frac{5}{6},\frac{11}{12},\frac{1}{1} \]

發現很顯然,不會嚴格證,感覺證起來好麻煩,但是這樣理解起來就很清晰了。


\(I*\mu=\varepsilon\)

\[I\ast \mu=\sum_{d\mid n}\mu(d) \]

求和寫出來應該是 \(1+(-1)+1+\cdots\) 這樣 \(1\)\(-1\) 的和。

假設 \(n=\prod\limits^{t} p_i^{k_i}\),那么考慮每個 \(p_i\) 的選或不選,有貢獻的 \(d\) 一共就有 \(2^t\) 個。

然后選奇數個 \(p\) 的貢獻為 \(-1\),選偶數個 \(p\) 的貢獻為 \(1\),那么就是 \(\dbinom t0-\dbinom t1+\dbinom t2-\cdots\),也就是 \(\sum\limits_{i=0}^{t}(-1)^i\dbinom ti\) ,發現是二項式定理的形式,也就是 \((1-1)^t\),也就是 \([t=0]=\varepsilon(t)\),所以 \(I\ast \mu=\varepsilon\)


\(id\ast\mu=\varphi\)

我們有

\(\varphi\ast I=id\)

左右兩邊都卷個 \(\mu\)

\(\varphi\ast I\ast\mu=id\ast\mu\)

於是

\(id\ast\mu=\varphi\)


莫比烏斯反演

\[F(n)=\sum_{d\mid n}f(d)\Rightarrow f(n)=\sum_{d\mid n}\mu(d)F(\frac nd) \]

\[F=f\ast I \]

\[\mu\ast F=f\ast I\ast\mu \]

\[f=\mu\ast F \]


基操

\[\sum_{i=1}^{n}\sum_{j=1}^{n}[\gcd(i,j)=1]\\ =\sum_{i=1}^{n}\sum_{j=1}^{n}\varepsilon(\gcd(i,j))\\ =\sum_{i=1}^{n}\sum_{j=1}^{n}I*\mu(\gcd(i,j))\\ =\sum_{i=1}^{n}\sum_{j=1}^{n}\sum_{d\mid \gcd(i,j)}\mu(d)\\ =\sum_{d=1}^{n}\mu(d)\sum_{i=1,d\mid i}^{n}\sum_{j=1,d\mid j}^n1\\ =\sum_{d=1}^n\mu(d)(\frac{n}{d})^2 \]

這個可以用在儀仗隊那道題里。


例題

BZOJ2694/BZOJ4659

#2694. Lcm

\(S(n)=\sum\limits_{i=1}^{n}i\),可以 \(O(1)\) 計算

\[\begin{align*} &\sum_{i=1}^A\sum_{j=1}^{B}\mu(\gcd(i,j))^2\operatorname{lcm}(i,j)\\ &=\sum_{d=1}^n\sum_{d\mid i}^A\sum_{d\mid j}^B\mu^2(d)\frac{ij}{d}[\gcd(i,j)=d]\\ &=\sum_{d=1}^{n}\sum_{i=1}^{A/d}\sum_{j=1}^{B/d}\mu^2(d)ijd[\gcd(i,j)=1]\\ &=\sum_{d=1}^n\mu^2(d)d\sum_{i=1}^{A/d}\sum_{j=1}^{B/d}ij\sum_{l\mid\gcd(i,j)}\mu(l)\\ &=\sum_{d=1}^n\mu^2(d)d\sum_{l}^{n/d}\mu(l)l^2\sum_{i=1}^{A/ld}\sum_{j=1}^{B/ld}ij\\ &=\sum_{d=1}^n\mu^2(d)d\sum_{l}^{n/d}\mu(l)l^2\sum_{i=1}^{A/ld}\sum_{j=1}^{B/ld}ij\\ &=\sum_{d=1}^n\mu^2(d)d\sum_{l=1}^{n/d}\mu(l)l^2S(\frac A{ld})S(\frac B{ld})\\ &=\sum_{T=1}^{n}S(\frac AT)S(\frac BT)\sum_{d\mid T}\mu^2(d)d\mu(\frac Td)(\frac Td)^2 \end{align*} \]

左邊用整除分塊,最多 \(2(\sqrt A+\sqrt B)\) 塊,右邊枚舉最大質因子次數為1的 \(d\) ,至多 \(n\) 個,然后就是枚舉倍數,一共 \(\sum\limits_{d\le n}\dfrac nd\) 次,這個東西參考hrj給出的方法可以理解是 \(n\log n\) 的。

於是復雜度 \(O(4T\sqrt n+n\log n)\),可以過掉此題。

另外感性理解一下右邊那坨里面 \(\mu^2(d)d\)\(\mu(d)d^2\) 都是積性函數,所以整個都可以直接線篩。於是就可以 \(O(4T\sqrt n+n)\) 做。在 \(1\) 處的值是 \(1\),在 \(p\) 處的值是 \(p-p^2\),在 \(p^2\) 處的值是 \(-p^3\),在 \(p^k(k>2)\) 的點值是 \(0\),所以可以先把 \(p\)\(p^2\) 的值篩出來,再重新篩其他的,具體可以看代碼。

參考代碼


P1829

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

\[\begin{align*} &\sum_{i=1}^n\sum_{j=1}^m\operatorname{lca}(i,j)\\ &=\sum_{i=1}^{n}\sum_{j=1}^{m}\frac{ij}{\gcd(i,j)}\\ &=\sum_{d=1}^{min(n,m)}\sum_{i=1}^{n/d}\sum_{j=1}^{m/d}ijd[\gcd(i,j)=d]\\ &=\sum_{d=1}d\sum_{i=1}^{n/d}\sum_{j=1}^{m/d}ij\sum_{l\mid\gcd(i,j)}\mu(l)\\ &=\sum_{d}d\sum_{l=1}^{n/d}\mu(l)l^2\sum_{i=1}^{n/ld}\sum_{j=1}^{m/ld}ij\\ &=\sum_dd\sum_l\mu(l)l^2S(\frac n{ld})S(\frac m{ld})\\ &=\sum_{T=1}^{n}S(\frac nT)S(\frac mT)\sum_{l\mid T}\mu(l)l^2(\frac Tl)\\ &=\sum_{T=1}^{n}TS(\frac nT)S(\frac mT)\sum_{l\mid T}\mu(l)l \end{align*} \]

前面的一樣可以整除分塊,於是我們來看 \(\sum\limits_{l\mid T}\mu(l)l\)。如果 \(\mu(l)l\) 也是積性函數就可以線性篩,我們把這個式子看做 \(\mu\) 點乘 \(id\),也就是 \((\mu\cdot id)\)。我們考慮讓它再卷上一個積性函數,如果得到的也是積性函數,那么這個函數也是積性函數。

我們讓它卷上一個 \(id\),那么 \((\mu\cdot id)\ast id\) 寫出來就是

\[\sum_{d\mid n}\mu(d)d*\frac nd\\ =n\sum_{d\mid n}\mu(d) \]

參考上面 \(I\ast \mu=\varepsilon\) 的證明,我們知道這個式子就是 \(\varepsilon\)

也就是說,由 \((\mu\cdot id)\ast id=\varepsilon\) 得到 \((\mu\cdot id)\) 也是積性函數,於是 \(\sum\limits_{l\mid T}\mu(l)l\) 就可以線篩了,那么要線性篩一個積性函數,我們只需要知道它在 \(p^k\) 處的點值。

\(\sum\limits_{l\mid n}\mu(l)l\),我們發現只有 \(l=1\)\(l=p\) 時有值,所以在 \(p^k\) 處的點值就是 \(1-p\)好怪哦

參考代碼


P3327

P3327 [SDOI2015]約數個數和

\[\begin{align*} &\sum_{i=1}^n\sum_{j=1}^md(ij)\\ =&\sum_{i=1}^n\sum_{j=1}^m\sum_{x\mid i}\sum_{y\mid j}[\gcd(x,y)=1]\\ =&\sum_{i=1}^n\sum_{j=1}^m\sum_{x\mid i}\sum_{y\mid j}\sum_{d\mid\gcd(x,y)}\mu(d)\\ =&\sum_{i=1}^n\sum_{j=1}^m\sum_{d\mid i,d\mid j}\mu(d)\sum_{d\mid x\mid i}\sum_{d\mid y\mid j}1\\ =&\sum_{i=1}^n\sum_{j=1}^m\sum_{d\mid i,d\mid j}\mu(d)\sum_{x\mid\frac id}\sum_{j\mid\frac jd}1\\ =&\sum_{i=1}^n\sum_{j=1}^m\sum_{d\mid i,d\mid j}\mu(d)d(\frac id)d(\frac jd)\\ =&\sum_{d=1}^{\min(n,m)}\mu(d)\sum_{i=1}^{n/d}d(i)\sum_{j=1}^{m/d}d(j) \end{align*} \]

\(S(x)=\sum\limits_{i=1}^xd(i)\),可以 \(O(n)\) 預處理,\(O(1)\) 查詢。

於是

\[\begin{align*} &\sum_{d=1}^{\min(n,m)}\mu(d)\sum_{i=1}^{n/d}d(i)\sum_{j=1}^{m/d}d(j)\\ =&\sum_{d=1}^{\min(n,m)}\mu(d)S(\lfloor\frac nd\rfloor)S(\lfloor\frac md\rfloor) \end{align*} \]

\(\mu\) 可以提前 \(O(n)\) 篩出來,然后右邊整除分塊,左邊 \(O(1)\) 查詢,總時間復雜度 \(O(n+T\sqrt n)\).

參考代碼


其他例題:

P3327 P2522 P1447


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM