莫比乌斯反演

【算法简介】

首先我们来看这样一个式子 F ( n ) = ∑ d ∣ n f ( d ) F(n)=\sum_{d|n}{f(d)} F(n)=dnf(d)
很显然 F ( 1 ) = f ( 1 ) F ( 2 ) = f ( 1 ) + f ( 2 ) F ( 3 ) = f ( 1 ) + f ( 3 ) . . . F ( 6 ) = f ( 1 ) + f ( 2 ) + f ( 3 ) + f ( 6 ) F ( 7 ) = f ( 1 ) + f ( 7 ) F ( 8 ) = f ( 1 ) + f ( 2 ) + f ( 4 ) + f ( 8 ) F(1)=f(1)\\F(2)=f(1)+f(2)\\F(3)=f(1)+f(3)\\...\\F(6)=f(1)+f(2)+f(3)+f(6)\\F(7)=f(1)+f(7)\\F(8)=f(1)+f(2)+f(4)+f(8) F(1)=f(1)F(2)=f(1)+f(2)F(3)=f(1)+f(3)...F(6)=f(1)+f(2)+f(3)+f(6)F(7)=f(1)+f(7)F(8)=f(1)+f(2)+f(4)+f(8)
于是我们可以通过F(n)推导出f(n) f ( 1 ) = F ( 1 ) f ( 2 ) = F ( 2 ) − F ( 1 ) f ( 3 ) = F ( 3 ) − F ( 1 ) . . . f ( 6 ) = F ( 6 ) − F ( 3 ) − F ( 2 ) + F ( 1 ) f ( 7 ) = F ( 7 ) − F ( 1 ) f ( 8 ) = F ( 8 ) − F ( 1 ) f(1)=F(1)\\f(2)=F(2)-F(1)\\f(3)=F(3)-F(1)\\...\\f(6)=F(6)-F(3)-F(2)+F(1)\\f(7)=F(7)-F(1)\\f(8)=F(8)-F(1) f(1)=F(1)f(2)=F(2)F(1)f(3)=F(3)F(1)...f(6)=F(6)F(3)F(2)+F(1)f(7)=F(7)F(1)f(8)=F(8)F(1)
显然这些式子是有一定规律的
这里我们就可以引入莫比乌斯反演了
公式如下 F ( n ) = ∑ d ∣ n f ( d )   ⇒   f ( n ) = ∑ d ∣ n μ ( d ) F ( n d ) F(n)=\sum_{d|n}f(d)\ \Rightarrow \ f(n)=\sum_{d|n}\mu(d)F(\frac{n}{d}) F(n)=dnf(d)  f(n)=dnμ(d)F(dn)
F ( d ) = ∑ d ∣ n f ( n ) ⇒ f ( d ) = ∑ d ∣ n μ ( n d ) F ( n ) F(d)=\sum_{d|n}f(n) \Rightarrow f(d)=\sum_{d|n}\mu(\frac{n}{d})F(n) F(d)=dnf(n)f(d)=dnμ(dn)F(n)
其中 μ ( d ) = { 1 d=1 ( − 1 ) k d=p1*p2...*pk p为互异素数 0 else \mu(d)= \begin{cases} 1&\text{d=1} \\(-1)^k&\text{d=p1*p2...*pk p为互异素数} \\0&\text{else} \end{cases} μ(d)=1(1)k0d=1d=p1*p2...*pk p为互异素数else
【习题1】ybtoj 43.B 周期字符串

由此可以得出推论 ∑ d ∣ n μ ( d ) = { 1 n=1 0 n>1 \sum_{d|n}\mu(d)= \begin{cases} 1&\text{n=1}\\0&\text{n>1}\end{cases} dnμ(d)={10n=1n>1
这个证明可以利用二项式定理,这里便不在赘述

这里还有一个性质 ∑ d ∣ n μ ( d ) d = ϕ ( n ) n \sum_{d|n}\frac{\mu(d)}{d}=\frac{\phi(n)}{n} dndμ(d)=nϕ(n)
带入 F ( n ) = n , f ( n ) = ϕ ( n ) F(n)=n,f(n)=\phi(n) F(n)=n,f(n)=ϕ(n)就行

一些推论

[ x = 1 ] = ∑ d ∣ x μ ( d ) [x=1]=\sum_{d|x}\mu(d) [x=1]=dxμ(d)
[ g c d ( x , y ) = 1 ] = ∑ d ∣ g c d ( x , y ) μ ( d ) [gcd(x,y)=1]=\sum_{d|gcd(x,y)}\mu(d) [gcd(x,y)=1]=dgcd(x,y)μ(d)

积性函数

若 任 意 的 ( x , y ) = 1 , 有 f ( x y ) = f ( x ) f ( y )    则 f ( n ) 为 积 性 函 数 若任意的(x,y)=1,有f(xy)=f(x)f(y)\ \ 则f(n)为积性函数 (x,y)=1,f(xy)=f(x)f(y)  f(n)
若 任 意 x 和 y , 有 f ( x y ) = f ( x ) f ( y )    则 f ( n ) 为 完 全 积 性 函 数 若任意x和y,有f(xy)=f(x)f(y)\ \ 则f(n)为完全积性函数 xy,f(xy)=f(x)f(y)  f(n)

一些小tips:

f ( 1 ) = 1 f(1)=1 f(1)=1
积性函数的前缀和也是积性函数

由于莫比乌斯函数也是积性函数,所以我们可以利用线性筛求出莫比乌斯函数

【代码】

	mu[1]=1;
	for(int i=2;i<=n;i++)
	{
		if(!np[i])
		{
			p[++tot]=i;
			mu[i]=-1;
		}
		for(int j=1;p[j]*i<=n;j++)
		{
			np[p[j]*i]=1;
			if(i%p[j]==0)
			{
				mu[p[j]*i]=0;
				break;
			}
			mu[p[j]*i]=-mu[i];
		}
	}

构造

g ( x ) = ∑ i = 1 n ∑ j = 1 m [ g c d ( i , j ) = = 1 ] g(x)=\sum_{i=1}^{n}\sum_{j=1}^{m}[gcd(i,j)==1] g(x)=i=1nj=1m[gcd(i,j)==1]

f ( d ) = ∑ d ∣ p g ( p )   ( p ≤ n ) f(d)=\sum_{d|p}g(p)\ (p\leq n) f(d)=dpg(p) (pn)
然后进行一下反演 g ( d ) = ∑ d ∣ p μ ( p d ) f ( p )   ( p ≤ n ) g(d)=\sum_{d|p}\mu(\frac{p}{d})f(p) \ (p\leq n) g(d)=dpμ(dp)f(p) (pn)

然后问题就转换为了求 f ( x ) f(x) f(x) f ( x ) f(x) f(x)表示的是 g c d ( i , j ) = x gcd(i,j)=x gcd(i,j)=x的倍数的数对数量

显然 f ( x ) = ⌊ n x ⌋ ⌊ m x ⌋ f(x)=\lfloor \frac{n}{x} \rfloor\lfloor \frac{m}{x} \rfloor f(x)=xnxm

【习题1】CF809E Surprise me!

【习题2】P3455 [POI2007]ZAP-Queries

【习题3】P2522 [HAOI2011]Problem b

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值