1. 程式人生 > 實用技巧 >西瓜視訊這20億,砸的是什麼?

西瓜視訊這20億,砸的是什麼?

莫比烏斯函式

  • \(\mu\)表示莫比烏斯函式,是一個由容斥係數所構成的函式,\(\mu{(d)}\)的定義是:

1.當d等於1時, \(\mu{(d)} = 1\)

2.當d由k個不同的質因子組成時,\(\mu{(d)} = (-1)^k\) (注:一定是互不相同的質因子

3.其它情況\(\mu{(d)} = 0\)

  • 莫比烏斯函式也有很多有趣的性質

性質一:對於任意正整數n,都有\(\sum\limits_{d|n} = [n = 1]\)

即當n等於1時 原式等於1,其它情況下 ,原式等於0


首先當n等於1時 ,顯然答案是1

當n不等於1時,答案與那些\(\mu\)值是0的項肯定沒有關係

現在考慮n有k個互不相同的質因子 它們分別組合

假定i個質因子相互組合 此時的方案數有\(\binom{k}{i}\)

而此時的\(\mu\)值為\((-1)^k\)

所以對於一個非1的n 最終的求和式子也就是

\((-1)^1*\binom{k}{1}+(-1)^2*\binom{k}{2}+...+(-1)^k*\binom{k}{k}+1\)(最後的1是\(\mu{(1)}\) 因為通過質因子相乘是無法組合出1的,所以要把漏掉的情況補上)

而1又等於\((-1)^0*\binom{k}{0}\)

所以原式就變成了\((-1)^0*\binom{k}{0}+(-1)^1*\binom{k}{1}+(-1)^2*\binom{k}{2}+...+(-1)^k*\binom{k}{k}\)

沒有感到這個式子很熟悉?

不熟悉去找數學老師跪搓衣板

二項式定理:\((a-b)^k = \binom{k}{0}a^k*b^0+\binom{k}{1}a^{k-1}*b^1+...+\binom{k}{k}a^0*b^k\)

所以原式就等於\((1-1)^k\) 即0



性質二:\(\sum\limits_{d|n} = \frac{\varphi_{n}}{n}\)

狄利克雷卷積證明
我不會



篩法比篩一般的積性函式還要簡單一點

void sieve(){
	mu[1] = 1;
	for(int i = 2;i <= maxk - 5;++i) {
		if(!vis[i]) prime[++cnt] = i,mu[i] = -1;
		for(int j = 1;j <= cnt && prime[j] * i <= maxk - 5;++j) {
			vis[prime[j]*i] = 1;
			mu[i*prime[j]] = -mu[i];
			if(i % prime[j] == 0) {mu[i*prime[j]] = 0;break;}
		}
	}
}

莫比烏斯反演

前提:\(f()\)是積性函式

則有 \(f(n)=\sum\limits_{d|n}g(d) \Leftrightarrow g(n)=\sum\limits_{d|n}\mu(d)f(\frac{n}{d})\)

證明:
\(\sum\limits_{d|n}\mu{(d)}*F(\frac{n}{d}) = \sum\limits_{d|n}\mu{(d)}*\sum\limits_{k|\frac{n}{d}}f(k) = \sum\limits_{d|n}f(d)*\sum\limits_{k|\frac{n}{d}}\mu{(k)} = f(n)\)
關於最後一步:

首先由性質1知 當\(d != n\) 時 答案為0

所以只需要統計當\(d = n\)時的答案

所以最後得到\(f(n)\)

另一種形式:

\(f(n)=\sum\limits_{n|d}g(d) \Leftrightarrow g(n)=\sum\limits_{n|d}\mu(\frac{d}{n})f(d)\)