因为接触到了积性函数的线性筛的问题,之前有过类似问题但是不够系统,所以想把遇到过的所有的反演问题的问题记录一下。
问题1:
求
a
n
s
=
∑
a
N
∑
b
M
g
c
d
(
a
,
b
)
ans=\sum_a^N\sum_b^Mgcd(a,b)
ans=a∑Nb∑Mgcd(a,b)
这个问题比较经典啦。
设
f
(
d
)
为
g
c
d
(
x
,
y
)
为
d
的
对
数
,
F
(
d
)
为
d
∣
g
c
d
(
x
,
y
)
的
对
数
f(d)为gcd(x,y)为d的对数,F(d)为d|gcd(x,y)的对数
f(d)为gcd(x,y)为d的对数,F(d)为d∣gcd(x,y)的对数
所以易知
F
(
n
)
=
∑
n
∣
d
f
(
d
)
F(n)=\sum_{n|d}f(d)
F(n)=n∣d∑f(d)
反演得:
f
(
n
)
=
∑
n
∣
d
μ
(
d
n
)
F
(
d
)
f(n)=\sum_{n|d}\mu(\frac{d}{n})F(d)
f(n)=n∣d∑μ(nd)F(d)
那么:
a
n
s
=
∑
i
i
∑
i
∣
d
μ
(
d
i
)
F
(
d
)
=
∑
d
F
(
d
)
∑
i
∣
d
μ
(
d
i
)
i
=
∑
d
F
(
d
)
∑
i
∣
d
μ
(
i
)
d
i
ans=\sum_ii\sum_{i|d}\mu(\frac{d}{i})F(d)\\=\sum_{d}F(d)\sum_{i|d}\mu(\frac{d}{i})i\\=\sum_{d}F(d)\sum_{i|d}\mu(i)\frac{d}{i}
ans=i∑ii∣d∑μ(id)F(d)=d∑F(d)i∣d∑μ(id)i=d∑F(d)i∣d∑μ(i)id
设
h
(
d
)
=
∑
i
∣
d
μ
(
i
)
d
i
h(d)=\sum_{i|d}\mu(i)\frac{d}{i}
h(d)=i∣d∑μ(i)id
我可以观察一下这个函数的性质是否满足积性函数的性质。设
p
,
q
p,q
p,q为质数.
那么
h
(
p
)
=
p
−
1
h(p)=p-1
h(p)=p−1,所以
h
(
q
)
h
(
p
)
=
(
p
−
1
)
(
q
−
1
)
h(q)h(p)=(p-1)(q-1)
h(q)h(p)=(p−1)(q−1)
因为
h
(
p
q
)
=
p
q
(
1
−
1
q
−
1
p
+
1
p
q
)
=
(
p
−
1
)
(
q
−
1
)
=
h
(
q
)
h
(
p
)
h(pq)=pq(1-\frac{1}{q}-\frac{1}{p}+\frac{1}{pq})=(p-1)(q-1)=h(q)h(p)
h(pq)=pq(1−q1−p1+pq1)=(p−1)(q−1)=h(q)h(p),所以是积性函数。
现在我们看
h
(
p
k
)
h(p^{k})
h(pk)这个函数的表达式。
因为k只要大于1,
μ
函
数
都
为
0
\mu函数都为0
μ函数都为0,所以易知
h
(
p
k
)
=
p
k
−
p
k
−
1
h(p^{k})=p^k-p^{k-1}
h(pk)=pk−pk−1
我发现这个函数表现的性质和欧拉函数是一样的**!**
也就是说
ϕ
(
d
)
=
∑
i
∣
d
μ
(
i
)
d
i
\phi(d)=\sum_{i|d}\mu(i)\frac{d}{i}
ϕ(d)=i∣d∑μ(i)id
所以原式为:
a
n
s
=
∑
d
F
(
d
)
ϕ
(
d
)
ans=\sum_{d}F(d)\phi(d)
ans=d∑F(d)ϕ(d)
那么问题已经有答案了,现在回过头来看这个关系,可以说是莫比乌斯函数和欧拉函数之间变换的桥梁:
ϕ
(
d
)
=
∑
i
∣
d
μ
(
i
)
d
i
=
∑
i
∣
d
μ
(
d
i
)
i
\phi(d)=\sum_{i|d}\mu(i)\frac{d}{i}=\sum_{i|d}\mu(\frac{d}{i})i
ϕ(d)=i∣d∑μ(i)id=i∣d∑μ(id)i
但是我们发现这个就是经过反演后的式子,所以我们应该还可以在还原到没有经过反演过的形式,则有:
n
=
∑
d
∣
n
ϕ
(
d
)
n=\sum_{d|n}\phi(d)
n=d∣n∑ϕ(d)
那么现在会有一个问题,既然答案没有莫比乌斯函数只有欧拉函数,我们能不能直接用如上的关系式来直接化简?
的确是可以的。
所以:
a
n
s
=
∑
a
N
∑
b
M
∑
d
∣
g
c
d
(
a
,
b
)
ϕ
(
d
)
=
∑
a
N
∑
b
M
∑
d
∣
a
且
d
∣
b
ϕ
(
d
)
=
∑
d
m
i
n
(
N
,
M
)
ϕ
(
d
)
N
d
M
d
ans=\sum_a^N\sum_b^M\sum_{d|gcd(a,b)}\phi(d)\\=\sum_a^N\sum_b^M\sum_{d|a且d|b}\phi(d)\\ =\sum_d^{min(N,M)}\phi(d)\frac{N}{d}\frac{M}{d}
ans=a∑Nb∑Md∣gcd(a,b)∑ϕ(d)=a∑Nb∑Md∣a且d∣b∑ϕ(d)=d∑min(N,M)ϕ(d)dNdM
假如n和m的范围都在
1
0
5
10^5
105这样,且有多组输入,那么就需要分块来加速,这样就需要处理
ϕ
(
x
)
\phi(x)
ϕ(x)的前缀和。
问题2
求
a
n
s
=
∑
a
N
∑
b
M
l
c
m
(
a
,
b
)
ans=\sum_a^N\sum_b^Mlcm(a,b)
ans=a∑Nb∑Mlcm(a,b)
问题2看似和问题1相差不大,但是推导异常繁杂,下次再这两个问题之间更新一下简化的问题。
首先:
a
n
s
=
∑
a
N
∑
b
M
a
b
g
c
d
(
a
,
b
)
ans=\sum_a^N\sum_b^M \frac{ab}{gcd(a,b)}
ans=a∑Nb∑Mgcd(a,b)ab
这里我们来枚举
d
=
g
c
d
(
a
,
b
)
d=gcd(a,b)
d=gcd(a,b):
a
n
s
=
∑
d
m
i
n
(
N
,
M
)
∑
a
N
∑
b
M
[
g
c
d
(
a
,
b
)
=
=
d
]
a
b
d
=
∑
d
m
i
n
(
N
,
M
)
d
∑
a
⌊
N
d
⌋
∑
b
⌊
M
d
⌋
[
g
c
d
(
a
,
b
)
=
=
1
]
a
b
ans=\sum_d^{min(N,M)}\sum_a^N\sum_b^M[gcd(a,b)==d]\frac{ab}{d}\\= \sum_d^{min(N,M)}d\sum_a^{\lfloor\frac{N}{d}\rfloor}\sum_b^{\lfloor\frac{M}{d}\rfloor}[gcd(a,b)==1]ab
ans=d∑min(N,M)a∑Nb∑M[gcd(a,b)==d]dab=d∑min(N,M)da∑⌊dN⌋b∑⌊dM⌋[gcd(a,b)==1]ab
然后这里引入:
∑
d
∣
n
μ
(
d
)
=
[
n
=
1
]
\sum_{d|n}\mu(d)=[n=1]
d∣n∑μ(d)=[n=1].
所以:
a
n
s
=
∑
d
m
i
n
(
N
,
M
)
d
∑
a
⌊
N
d
⌋
∑
b
⌊
M
d
⌋
a
b
∑
k
∣
g
c
d
(
a
,
b
)
μ
(
k
)
ans=\sum_d^{min(N,M)}d\sum_a^{\lfloor\frac{N}{d}\rfloor}\sum_b^{\lfloor\frac{M}{d}\rfloor}ab\sum_{k|gcd(a,b)}\mu(k)
ans=d∑min(N,M)da∑⌊dN⌋b∑⌊dM⌋abk∣gcd(a,b)∑μ(k)
发现内嵌的三个和式子和第一个问题有相似之处.做同样的处理:
设$ g(x)=1+2+3+…+x$
f
(
n
,
m
)
=
∑
a
n
∑
b
m
a
b
∑
k
∣
g
c
d
(
a
,
b
)
μ
(
k
)
f(n,m)=\sum_a^{n}\sum_b^{m}ab\sum_{k|gcd(a,b)}\mu(k)
f(n,m)=a∑nb∑mabk∣gcd(a,b)∑μ(k)
f
(
n
,
m
)
=
∑
k
m
i
n
(
n
,
m
)
μ
(
k
)
k
2
g
(
⌊
n
k
⌋
)
g
(
⌊
m
k
⌋
)
f(n,m)=\sum_k^{min(n,m)}\mu(k)k^2g(\lfloor\frac{n}{k}\rfloor)g(\lfloor\frac{m}{k}\rfloor)
f(n,m)=k∑min(n,m)μ(k)k2g(⌊kn⌋)g(⌊km⌋)
所以 a n s = ∑ d m i n ( N , M ) d f ( ⌊ N d ⌋ , ⌊ M d ⌋ ) ans=\sum_d^{min(N,M)}df(\lfloor\frac{N}{d}\rfloor,\lfloor\frac{M}{d}\rfloor) ans=d∑min(N,M)df(⌊dN⌋,⌊dM⌋)
因为 ⌊ ⌊ N d ⌋ d ′ ⌋ = ⌊ N d d ′ ⌋ \lfloor\frac{\lfloor\frac{N}{d}\rfloor}{d'}\rfloor=\lfloor\frac{N}{dd'}\rfloor ⌊d′⌊dN⌋⌋=⌊dd′N⌋
所以整合到原式
a
n
s
=
∑
d
m
i
n
(
N
,
M
)
d
∑
k
m
i
n
(
⌊
N
d
⌋
,
⌊
M
d
⌋
)
μ
(
k
)
k
2
g
(
⌊
N
k
d
⌋
)
g
(
⌊
M
k
d
⌋
)
ans=\sum_d^{min(N,M)}d\sum_k^{min(\lfloor\frac{N}{d}\rfloor,\lfloor\frac{M}{d}\rfloor)}\mu(k)k^2g(\lfloor\frac{N}{kd}\rfloor)g(\lfloor\frac{M}{kd}\rfloor)
ans=d∑min(N,M)dk∑min(⌊dN⌋,⌊dM⌋)μ(k)k2g(⌊kdN⌋)g(⌊kdM⌋)
设
h
(
x
)
=
g
(
⌊
N
x
⌋
)
g
(
⌊
M
x
⌋
)
h(x)=g(\lfloor\frac{N}{x}\rfloor)g(\lfloor\frac{M}{x}\rfloor)
h(x)=g(⌊xN⌋)g(⌊xM⌋)
a
n
s
=
∑
d
d
∑
k
μ
(
k
)
k
2
h
(
k
d
)
ans=\sum_dd\sum_k\mu(k)k^2h(kd)
ans=d∑dk∑μ(k)k2h(kd)
设
t
=
k
d
t=kd
t=kd
a
n
s
=
∑
t
h
(
t
)
∑
k
∣
t
μ
(
k
)
k
2
t
k
=
∑
t
h
(
t
)
t
∑
k
∣
t
μ
(
k
)
k
ans=\sum_th(t)\sum_{k|t}\mu(k)k^2\frac{t}{k}\\= \sum_th(t)t\sum_{k|t}\mu(k)k
ans=t∑h(t)k∣t∑μ(k)k2kt=t∑h(t)tk∣t∑μ(k)k
设
l
(
n
)
=
∑
k
∣
n
μ
(
k
)
k
l(n)=\sum_{k|n}\mu(k)k
l(n)=k∣n∑μ(k)k
易知
l
(
n
)
l(n)
l(n)是个积性函数,用欧拉筛线性处理即可。