莫比乌斯反演MöbiusInversionFormula
Posted Chivas_/Regal
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了莫比乌斯反演MöbiusInversionFormula相关的知识,希望对你有一定的参考价值。
📕前置芝士 —— 莫比乌斯函数
🎈定义
μ
(
n
)
=
{
1
n
=
1
(
−
1
)
k
n
无
平
方
因
数
,
n
=
p
1
p
2
p
3
.
.
.
p
k
0
n
有
大
于
1
的
平
方
因
数
μ(n) = \\begin{cases} 1 & n = 1 \\\\ (-1)^k & n无平方因数,n = p_1p_2p_3...p_k \\\\ 0 & n有大于1的平方因数 \\\\ \\end{cases}
μ(n)=⎩⎪⎨⎪⎧1(−1)k0n=1n无平方因数,n=p1p2p3...pkn有大于1的平方因数
可以简化为:
在n无平方因数时:
μ
(
n
)
=
(
−
1
)
n
的
不
同
质
因
子
的
个
数
μ(n) = (-1)^{n的不同质因子的个数}
μ(n)=(−1)n的不同质因子的个数
其他情况:
μ
(
n
)
=
0
\\qquad\\;\\;\\;μ(n) = 0
μ(n)=0
🎈性质
正常情况下在n有x数个不同质因子,m有y数个不同质因子时
1.x奇,y奇,n * m的质因子个数 = x + y = 偶,
μ
(
n
)
∗
μ
(
m
)
=
(
−
1
)
∗
(
−
1
)
=
1
μ(n) * μ(m) = (-1) * (-1) = 1
μ(n)∗μ(m)=(−1)∗(−1)=1
2.x奇,y偶,n * m的质因子个数 = x + y = 奇,
μ
(
n
)
∗
μ
(
m
)
=
(
−
1
)
∗
1
=
−
1
μ(n) * μ(m) = (-1) * \\quad1 \\;\\;= -1
μ(n)∗μ(m)=(−1)∗1=−1
3.x偶,y奇,n * m的质因子个数 = x + y = 奇,
μ
(
n
)
∗
μ
(
m
)
=
1
∗
(
−
1
)
=
−
1
μ(n) * μ(m) = \\quad1 \\;\\;* (-1) = -1
μ(n)∗μ(m)=1∗(−1)=−1
4.x偶,y偶,n * m的质因子个数 = x + y = 偶,
μ
(
n
)
∗
μ
(
m
)
=
1
∗
1
=
1
μ(n) * μ(m) = \\quad1 \\;\\;* \\quad1 \\;\\;= 1
μ(n)∗μ(m)=1∗1=1
可以看出莫比乌斯函数是个积性函数
但是特殊情况例如
n
=
m
=
2
n = m = 2
n=m=2时
μ
(
n
)
=
μ
(
m
)
=
−
1
μ(n) = μ(m) = -1
μ(n)=μ(m)=−1
μ
(
n
∗
m
)
=
0
!
=
(
−
1
)
∗
(
−
1
)
=
μ
(
n
)
∗
μ
(
m
)
μ(n * m) = 0\\;\\;!= (-1) * (-1) = μ(n) * μ(m)
μ(n∗m)=0!=(−1)∗(−1)=μ(n)∗μ(m)
所以莫比乌斯函数不是完全积性函数
🎈利用
∑
d
∣
n
μ
(
d
)
=
[
n
=
1
]
\\sum_{d\\mid n}^{}μ(d) = [n = 1]
d∣n∑μ(d)=[n=1]
例如 n = 12时
∑
d
∣
12
μ
(
12
)
=
μ
(
1
)
+
μ
(
2
)
+
μ
(
3
)
+
μ
(
4
)
+
μ
(
6
)
+
μ
(
12
)
=
1
+
(
−
1
)
+
1
+
0
+
1
+
0
\\sum_{d\\mid 12}^{}μ(12) =μ(1)+μ(2)+μ(3)+μ(4)+μ(6)+μ(12) = 1 + (-1) + 1 + 0 + 1 + 0
d∣12∑μ(12)=μ(1)+μ(2)+μ(3)+μ(4)+μ(6)+μ(12)=1+(−1)+1+0+1+0
🎈程序
线性筛打表:
const int maxn = 2005;
bool isprime[maxn];
ll mu[maxn];//Mobius函数表
vector<ll> prime;
inline void Mobius(){//线性筛
isprime[0] = isprime[1] = 1;
mu[1] = 1;//特判mu[i] = 1
for(ll i = 2; i <= maxn; i ++){
if( !isprime[i] ) mu[i] = -1, prime.push_back(i);//质数的质因子只有自己,所以为-1
for(ll j = 0; j < prime.size() && i * prime[j] <= maxn; j ++){
isprime[i * prime[j]] = 1;
if(i % prime[j] == 0) break;
mu[i * prime[j]] = -mu[i];//积性函数性质: (i * prime[j])多出来一个质数因数(prime[j]),修正为 (-1) * mu[i]
}
}
//剩余的没筛到的是其他情况,为0
}
📕概述
🎈概念
莫反是一种利用莫比乌斯函数的积性性质,对方程进行计算用时简化的一种方法
🎈思想
(上文中性质的利用)
🎈反演式
设有两个方程 f ( x ) f(x) f(x)和 F ( x ) F(x) F(x),有以下两种反演方式
1.
F
(
n
)
=
∑
d
∣
n
f
(
d
)
F(n) = \\sum_{d|n}f(d)
F(n)=d∣n∑f(d)
⇓
\\Downarrow
⇓
f
(
n
)
=
∑
d
∣
n
μ
(
d
)
F
(
n
d
)
f(n) = \\sum_{d|n}{}μ(d)F(\\frac nd)
f(n)=d∣n∑μ(d)F(dn)
2.
F
(
n
)
=
∑
n
∣
d
f
(
d
)
F(n) = \\sum_{n|d}f(d)
F(n)=n∣d∑f(d)
⇓
\\Downarrow
⇓
f
(
n
)
=
∑
n
∣
d
μ
(
d
n
)
F
(
d
)
f(n) = \\sum_{n|d}{}μ(\\frac dn)F(d)
f(n)=n∣d∑μ(nd)F(d)
📕实例
🎈题目
UVA10214 《Trees in a Wood.》传送门
🎈思路
与[SDOI2008]仪仗队很像
在一个象限内
都是让求
∑
i
=
1
N
∑
j
=
1
M
[
g
c
d
(
i
,
j
)
=
1
]
=
∑
i
=
1
N
∑
j
=
1
M
∑
d
∣
g
c
d
(
i
,
j
)
μ
(
d
)
=
∑
d
=
1
m
i
n
(
N
,
M
)
μ
(
d
)
∗
⌊
n
d
⌋
∗
⌊
m
d
⌋
\\;\\;\\;\\;\\;\\;\\sum_{i = 1}^{N}\\sum_{j=1}^{M}[gcd(i,j)=1] \\\\ = \\sum_{i = 1}^{N}\\sum_{j = 1}^{M}\\sum_{d|gcd(i, j)}^{}μ(d)\\\\ \\;\\;\\;\\;\\;\\quad\\;\\;= \\sum_{d = 1}^{min(N, M)}μ(d)*\\left \\lfloor \\frac nd \\right \\rfloor *\\left \\lfloor \\frac md \\right \\rfloor \\\\
HYSBZ - 2005 莫比乌斯反演