【算法简介】
首先我们来看这样一个式子
F
(
n
)
=
∑
d
∣
n
f
(
d
)
F(n)=\sum_{d|n}{f(d)}
F(n)=∑d∣nf(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)=d∣n∑f(d) ⇒ f(n)=d∣n∑μ(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)=d∣n∑f(n)⇒f(d)=d∣n∑μ(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}
d∣n∑μ(d)={10n=1n>1
这个证明可以利用二项式定理,这里便不在赘述
这里还有一个性质
∑
d
∣
n
μ
(
d
)
d
=
ϕ
(
n
)
n
\sum_{d|n}\frac{\mu(d)}{d}=\frac{\phi(n)}{n}
d∣n∑dμ(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]=∑d∣xμ(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]=∑d∣gcd(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)为完全积性函数
若任意x和y,有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=1n∑j=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)=∑d∣pg(p) (p≤n)
然后进行一下反演
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)=∑d∣pμ(dp)f(p) (p≤n)
然后问题就转换为了求 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)=⌊xn⌋⌊xm⌋
【习题1】CF809E Surprise me!