莫比乌斯反演简略版

推荐讲义

炫酷反演魔术

(g(x)=sumlimits_{d|x}f(d) iff f(x)=sumlimits_{d|x}mu(frac{x}{d})*g(d))


(g(x)=sumlimits_{x|d}^nf(d) iff f(x)=sumlimits_{x|d}^nmu(frac{d}{x})*g(d))


(mu)为莫比乌斯函数。

定义:(sumlimits_{d|x}mu(d)=[x==1])

经分析可得:

(x=p_1p_2p_3...p_n,mu(x)=(-1)^n)

(x=p^2*d,mu(x)=0)

(x=1,mu(x)=1)

(mu)的线性筛代码

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

例题:

【BZOJ2818】Gcd

【NOI2010】能量采集

【2011集训贾志鹏】Crash 的数字表格

【SDOI2015】约数个数和

【BZOJ4407】于神之怒加强版

【BZOJ2693】jzptab

【SDOI2017】数字表格

【BZOJ2820】YY的GCD

【SDOI2014】数表

【UR #5】怎样跑得更快

原文地址:https://www.cnblogs.com/Emiya-wjk/p/9991877.html