LibreOJ #2095. -「CQOI2015」选数 - 莫比乌斯反演+杜教筛+整除分块
Posted Chivas_/Regal
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LibreOJ #2095. -「CQOI2015」选数 - 莫比乌斯反演+杜教筛+整除分块相关的知识,希望对你有一定的参考价值。
题目:
思路:
题意让求:
∑
i
1
=
L
H
∑
i
2
=
L
H
.
.
.
.
∑
i
n
=
L
H
[
g
c
d
=
k
]
\\sum_{i_1=L}^H\\sum_{i_2=L}^H....\\sum_{i_n=L}^H[gcd=k]
∑i1=LH∑i2=LH....∑in=LH[gcd=k]
所以我们令:
f
(
k
)
=
∑
i
1
=
L
H
∑
i
2
=
L
H
.
.
.
.
∑
i
n
=
L
H
[
g
c
d
=
k
]
f(k)=\\sum_{i_1=L}^H\\sum_{i_2=L}^H....\\sum_{i_n=L}^H[gcd=k]
f(k)=∑i1=LH∑i2=LH....∑in=LH[gcd=k]
为满足:
F
(
k
)
=
∑
k
d
f
(
d
)
F(k)=\\sum_{\\frac kd}f(d)
F(k)=∑dkf(d)
令:
F
(
k
)
=
∑
i
1
=
L
H
∑
i
2
=
L
H
.
.
.
.
∑
i
n
=
L
H
[
k
∣
g
c
d
]
F(k) = \\sum_{i_1=L}^H\\sum_{i_2=L}^H....\\sum_{i_n=L}^H[k|gcd]
F(k)=∑i1=LH∑i2=LH....∑in=LH[k∣gcd]
为了使每个i都是k的倍数保证每次枚举都是可以使得
[
k
∣
g
c
d
]
=
1
[k|gcd]=1
[k∣gcd]=1
我们设
i
′
=
i
k
i'=\\frac ik
i′=ki,枚举
i
′
i'
i′,也就是
k
k
k的倍数
得到:
F
(
k
)
=
∑
i
1
′
=
L
−
1
k
H
k
∑
i
2
′
=
L
−
1
k
H
k
.
.
.
.
∑
i
n
′
=
L
−
1
k
H
k
1
F(k) = \\sum_{i_1'=\\frac{L-1}{k}}^\\frac Hk\\sum_{i_2'=\\frac{L-1}{k}}^\\frac Hk....\\sum_{i_n'=\\frac{L-1}{k}}^\\frac Hk1
F(k)=∑i1′=kL−1kH∑i2′=kL−1kH....∑in′=kL−1kH1
可以化简为:
F
(
k
)
=
(
⌊
H
k
⌋
−
⌊
L
−
1
k
⌋
)
n
F(k)=(\\left \\lfloor \\frac{H}{k} \\right \\rfloor - \\left \\lfloor \\frac{L-1}{k} \\right \\rfloor )^n
F(k)=(⌊kH⌋−⌊kL−1⌋)n
由莫反定理得:
f
(
k
)
=
∑
k
∣
d
μ
(
d
k
)
F
(
d
)
f(k)=\\sum_{k|d}\\mu(\\frac dk)F(d)
f(k)=∑k∣dμ(kd)F(d)
为了使枚举到的d均为k的倍数
我们设
d
′
=
d
k
H
′
=
H
k
d' = \\frac dk\\quad H'=\\frac Hk
d′=kdH′=kH,此时
d
=
d
′
k
d=d'k
d=d′k
则:
f
(
k
)
=
∑
d
′
=
1
H
′
μ
(
d
′
)
F
(
d
′
k
)
f(k)=\\sum_{d'=1}^{H'}\\mu(d')F(d'k)
f(k)=∑d′=1H′μ(d′)F(d′k)
此时 F ( d ′ k ) = ( ⌊ H d ′ k ⌋ − ⌊ L − 1 d ′ k ⌋ ) n F(d'k)=(\\left \\lfloor \\frac{H}{d'k} \\right \\rfloor - \\left \\lfloor \\frac{L-1}{d'k} \\right \\rfloor )^n F(d′k以上是关于LibreOJ #2095. -「CQOI2015」选数 - 莫比乌斯反演+杜教筛+整除分块的主要内容,如果未能解决你的问题,请参考以下文章