莫比乌斯反演(纯知识)

Updateon2023.8.3:精细修改了一些内容,改了下内容排版

Updateon2023.8.4:增加了整除差分

一、狄利克雷卷积

定义

两个数论函数 f(x),g(x),则它们的 狄利克雷卷积 得到的结果 h(x) 定义为:

h(x)=dxf(d)g(xd)=ab=xf(a)g(b)

一些其它定义

  • 单位元ε(n)=[n=1]。对于任何数论函数 f,都有 fε=f

  • I(n)=1

  • id(n)=n

性质

  • 满足交换律、结合律、分配律

  • 积性:两个积性函数的狄利克雷卷积仍然是积性函数。积性函数的逆仍是积性函数

常见结论

  • μI=ε

  • φI=id

  • idμ=φ

二、莫比乌斯函数

定义

I 的狄利克雷卷积逆元记为 μ,称作莫比乌斯函数

设正整数 n算数基本定理分解质因数为 n=p1c1p2c2pmcm,则

μ(n)={0i[1,m],ci>11m0(mod2),i[1,m],ci=11m1(mod2),i[1,m],ci=1

特别地,μ(1)=1

性质

  • 根据“积性函数的逆也是积性函数”可得:莫比乌斯函数是积性函数

计算

回顾 欧拉函数与积性函数专题,很明显莫比乌斯函数可以使用线性筛求解

void primes(int n)
{
	mu[1]=1;
	for(int i=2; i<=n; i++)
	{
		if(!v[i])
		{
			v[i]=i;
			prime[++tot]=i;
			mu[i]=-1;
		}
			
		for(int j=1; j<=tot; j++)
		{
			if(prime[j]>v[i] || prime[j]>n/i)
				break;
			v[i*prime[j]]=prime[j];
			if(i%prime[j]==0)
				break;
			mu[prime[j]*i]=-mu[i];
		}
	}
}

三、整除分块

整除分块是用于解决整除求和问题 i=1nni

  • ni 按相同值分块

  • 可以证明,分块少于 2n

for(LL l=1,r; l<=n; l=r+1)
{
	r=n/(n/l);
	ans+=(r-l+1)*(n/l);
}

四、莫比乌斯反演

反演动机

dnμ(d)=[n=1]

结论

f(n),g(n) 为两个数论函数。

  • 如果有 f(n)=dng(d),那么有

    g(n)=dnμ(d)f(nd)

    证明:容易看出,数论函数 g(n) 的莫比乌斯变换,就是将g(n)1 进行狄利克雷卷积。
    f=gI
    fμ=gIμ=gε=g

  • 如果有 f(n)=n|dg(d),那么有

    g(n)=n|dμ(dn)f(d)

    证明:考虑逆推:
    n|dμ(dn)f(d)
    =k=1μ(k)f(kn)
    =k=1μ(k)kn|dg(d)
    =n|dg(d)k|dnμ(k)
    =n|dg(d)ϵ(dn)
    =g(n)

应用

关于莫反的习题,详见以后的博客

五、整除差分

一个黑科技

CF915G Coprime Arrays 为例

快进到式子:

ans(k)=d=1kμ(d)kdn

如果对每个 k 分别使用整除分块,复杂度 O(nn),无法通过

注意到 k/d(k1)/ddk,且此时 k/d=(k1)/d+1

对答案差分,有:

ans(k)ans(k1)=d=1kμ(d)kdnd=1k1μ(d)k1dn=d=1kμ(d)(kdnk1dn)=dkμ(d)[(kd)n(kd1)n]

线性筛出 idk 后,记 h(n)=nk(n1)k,则 Δans=hμ,时间复杂度 O(nlogn)

posted @   xishanmeigao  阅读(31)  评论(0编辑  收藏  举报
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 【杂谈】分布式事务——高大上的无用知识?
点击右上角即可分享
微信分享提示