莫比乌斯反演 & gcd 卷积

发布时间 2023-08-12 23:03:41作者: ChElsYqwq

没有写一些概念(?(((

我是梅比乌斯厨=莫比乌斯厨=牲畜(暴论。


前置芝士

积性分解

对于积性函数 \(f\),给出 \(n=\prod_{i=1}^m p_i^{c_i}\)。有 \(f(n)=\prod_{i=1}^m f(p_i^{c_i})\)。意思是跟 质因子 & 幂次 相关度较高 。


狄利克雷卷积

两个数论函数(这里理解成值域为正整数)卷乘一个新的数论函数,记作 \(f*g\)。满足

\[(f*g)(n)=\sum_{xy=n}f(x)g(y)=\sum_{d|n}f(d)g(n/d) \]

  • 这玩意满足 交换 & 结合律。数论函数 \(\epsilon(n)=[n=1]\)。任意数论函数 \(f*\epsilon=f\)

  • 计算上面除了按照定义也可以枚举因数的倍数。

  • 两个积性函数的卷积仍是积性函数。


卷积逆元

给出 \(f\) 满足 \(f(1)=1\)\(f\) 的逆元 \(g=f^{-1}\) 满足 \(f*g=\epsilon\)

首先 \(g(1)=1\),对于 \(n>1\)\(g(n)\)

\[(f*g)(n)=\epsilon(n) \]

\[\sum_{d|n}f(d)g(n/d)=0 \]

\[g(n)=-\sum_{d|n,d\neq 1}f(d)g(n/d) \]

  • 积性函数的逆仍是积性函数。

莫比乌斯反演

莫比乌斯函数

有函数 \(I(n)=1\),莫比乌斯函数 \(\mu=\epsilon^{-1}\)

写出在幂处的取值,是研究积性函数的通用方法。

  • \(\mu(1)=1\)

  • \(\mu(p)I(1)+\mu(1)I(p)=0\) 意思是 \(\mu(p)=-1\)

  • \(k>1,\sum_{i=0}^k\mu(p^i)=0\),归纳就是 \(\mu(p^k)=0\)

\(n\) 没有平方因子时, \(\mu(n)=-1^{x}\),其中 \(x\)\(n\) 的素因子数目。otherwise, \(\mu(n)=0\)

\(\mu\) 这个跟 *** 一样可爱的东西用卷积逆就可以 \(O(n\log n)\) 卷出来了。也可以线性筛递推捏。具体的递推 \(\mu(n)\)\(p|(n/p)\) 的话 \(\mu(n)=0\) 否则就是 \(\mu(n)=-\mu(n/p)\)

int p[M], top, mu[M], vis[M];
vis[1]=1, mu[1]=1;
for(int i=2; i<=N; ++i) {
	if(!vis[i]) p[++top]=i, mu[i]=-1;
	for(int j=1; j<=top&&i*p[j]<=N; ++j) {
		int x=i*p[j]; vis[x]=1;
		if(i%p[j]!=0) mu[x]=-mu[i];
	}
}

约数求和 & 倍数求和

有一定的值域 qwq bwb pwp dwd

\(f\) 弄一个可爱的 \(Lsum(f)\) & 一个丑陋的 \(Rsum(f)\)

\[(Lsum(f))(n)=\sum_{d|n}f(d) \]

\[(Rsum(f))(n)=\sum_{n|d}f(d) \]

按照幂次把数看为高维点这个分别是 前缀|后缀和 >w<

我们再给祂们弄逆操作\(Ldif(Lsum(f))=f,Rdif(Rsum(f))=f\)

差分的计算

给出 \(g=Lsum(f)\),求 \(f\)。条件等价于 \(g=f*l\),则 \(f=g*\mu\)

给出 \(g=Rsum(f)\),求 \(f\)

\[\sum_{n|d}\mu(d/n)g(d) \]

\[=\sum_{n|d}\mu(d/n)\sum_{d|t}f(t) \]

\[=\sum_{k=1}\mu(k)\sum_{nk|t}f(t) \]

\[=\sum_{t=1}f(t)\sum_{nk|t}\mu(k) \]

\[=\sum_{t=1}f(t)[n|t]\epsilon(t/n) \]

\[=f(n) \]

或者容斥也可以捏 >_<

求得 \(\mu\) 的话,计算都是 \(O(n\log n)\) 捏。


gcd 卷积

给出函数 \(f,g\),记两者的 gcd卷卷卷函数为 \(h\)。满足 \(h(n)=\sum_{\gcd(x,y)=n}f(x)g(y)\)

求出 \(Rsum(h)\) 然后倍数差分捏。

\[(Rsum(h))(n) \]

\[=\sum_{n|gcd(x,y)}f(x)g(y) \]

\[=\sum_{n|x,n|y}f(x)g(y) \]

\[=(Rsum(f))(n)(Rsum(g))(n) \]

可以联想 and 卷积,有类似的结论 qwq

如果有些 \(f\) 很厉害的话,可以顺便记录一下最小质因子的次数来递推。

\(n\) 里面质数的幂有多少个呢(?(((

\[O(\sum_{p\in P}\sum_{c=1}[p^c\leq n]) \]

\[=O(\sum_{c=1}\sum_{p\in P}[p\leq n^{1/c}]) \]

\[=O(\sum_{c=1}n^{1/c}/\log n^{1/c}) \]

\[=O(n/\log n) \]

然后如果求单个 \(f(p^k)\) 的复杂度不超过 \(O(\log n)\) 的话,总复杂度线性。

说句闲话这解决了 lsy 一个珂爱的没有深究的历史遗留的不知道为什么能过问题(?