2021年GDCPC广东省大学生程序设计竞赛(热身赛) A.Calculation(贝尔级数)
传送门:https://ac.nowcoder.com/acm/contest/17796/A?&headNav=acm
题目大意:给定
n
n
n,求
∑
i
=
1
n
∑
j
=
1
n
∑
k
=
1
n
λ
(
i
)
λ
(
j
)
[
i
∣
j
a
n
d
j
∣
k
]
\sum\limits_{i=1}^n\sum\limits_{j=1}^n\sum\limits_{k=1}^n\lambda(i)\lambda(j)[i\mid j\space and\space j\mid k]
i=1∑nj=1∑nk=1∑nλ(i)λ(j)[i∣j and j∣k],
λ
(
n
)
\lambda(n)
λ(n)为刘维尔函数,
λ
(
n
)
=
(
−
1
)
c
\lambda(n)=(-1)^c
λ(n)=(−1)c,
c
c
c为
n
n
n中所包含的质因数个数且重复计数。
题解:首先考虑改变枚举顺序消去
[
i
∣
j
a
n
d
j
∣
k
]
[i\mid j\space and\space j\mid k]
[i∣j and j∣k]:
⇒
∑
i
=
1
n
∑
j
=
1
n
∑
k
=
1
⌊
n
j
⌋
λ
(
i
)
λ
(
j
)
[
i
∣
j
]
=
∑
i
=
1
n
∑
j
=
1
⌊
n
i
⌋
∑
k
=
1
⌊
n
i
j
⌋
λ
(
i
)
λ
(
i
j
)
=
∑
i
=
1
n
∑
j
=
1
⌊
n
i
⌋
⌊
n
i
j
⌋
λ
(
i
)
λ
(
i
j
)
\begin{aligned} &\Rightarrow\sum\limits_{i=1}^n\sum\limits_{j=1}^n\sum\limits_{k=1}^{\lfloor\frac{n}{j}\rfloor}\lambda(i)\lambda(j)[i\mid j] \\&=\sum\limits_{i=1}^n\sum\limits_{j=1}^{\lfloor\frac{n}{i}\rfloor}\sum\limits_{k=1}^{\lfloor\frac{n}{ij}\rfloor}\lambda(i)\lambda(ij) \\&=\sum\limits_{i=1}^n\sum\limits_{j=1}^{\lfloor\frac{n}{i}\rfloor}\lfloor\frac{n}{ij}\rfloor\lambda(i)\lambda(ij) \end{aligned}
⇒i=1∑nj=1∑nk=1∑⌊jn⌋λ(i)λ(j)[i∣j]=i=1∑nj=1∑⌊in⌋k=1∑⌊ijn⌋λ(i)λ(ij)=i=1∑nj=1∑⌊in⌋⌊ijn⌋λ(i)λ(ij)
考虑刘维尔函数的定义,显然这个函数为完全积性函数且对于一个平方数
x
2
x^2
x2,一定有
λ
(
x
2
)
=
1
\lambda(x^2)=1
λ(x2)=1,那么:
⇒
∑
i
=
1
n
∑
j
=
1
⌊
n
i
⌋
⌊
n
i
j
⌋
λ
(
i
2
j
)
=
∑
i
=
1
n
∑
j
=
1
⌊
n
i
⌋
⌊
n
i
j
⌋
λ
(
j
)
=
∑
T
=
1
n
⌊
n
T
⌋
∑
d
∣
T
λ
(
d
)
\begin{aligned} &\Rightarrow\sum\limits_{i=1}^n\sum\limits_{j=1}^{\lfloor\frac{n}{i}\rfloor}\lfloor\frac{n}{ij}\rfloor\lambda(i^2j) \\&=\sum\limits_{i=1}^n\sum\limits_{j=1}^{\lfloor\frac{n}{i}\rfloor}\lfloor\frac{n}{ij}\rfloor\lambda(j) \\&=\sum\limits_{T=1}^n\lfloor\frac{n}{T}\rfloor\sum\limits_{d\mid T}\lambda(d) \end{aligned}
⇒i=1∑nj=1∑⌊in⌋⌊ijn⌋λ(i2j)=i=1∑nj=1∑⌊in⌋⌊ijn⌋λ(j)=T=1∑n⌊Tn⌋d∣T∑λ(d)
第三步是枚举
T
=
i
j
T=ij
T=ij时得出来的转变。
现在只需要求解后一部分的
∑
d
∣
T
λ
(
d
)
\sum\limits_{d\mid T}\lambda(d)
d∣T∑λ(d)。
考虑
λ
(
n
)
\lambda(n)
λ(n)的贝尔级数,不懂贝尔级数的读者可以到这篇文章进行学习。
λ
p
(
x
)
=
1
−
x
+
x
2
−
x
3
+
⋯
x
λ
p
(
x
)
=
x
−
x
2
+
x
3
−
x
4
+
⋯
(
1
+
x
)
λ
p
(
x
)
=
1
λ
p
(
x
)
=
1
1
+
x
\lambda_p(x)=1-x+x^2-x^3+\cdots \\x\lambda_p(x)=x-x^2+x^3-x^4+\cdots \\(1+x)\lambda_p(x)=1 \\\lambda_p(x)=\frac{1}{1+x}
λp(x)=1−x+x2−x3+⋯xλp(x)=x−x2+x3−x4+⋯(1+x)λp(x)=1λp(x)=1+x1
这里的
∑
d
∣
T
λ
(
d
)
\sum\limits_{d\mid T}\lambda(d)
d∣T∑λ(d)相当于:
(
λ
∗
1
)
(
x
)
⇒
λ
p
(
x
)
1
p
(
x
)
=
1
1
+
x
×
1
1
−
x
=
1
1
−
x
2
(\lambda*1)(x)\Rightarrow\lambda_p(x)1_p(x)=\frac{1}{1+x}\times\frac{1}{1-x}=\frac{1}{1-x^2}
(λ∗1)(x)⇒λp(x)1p(x)=1+x1×1−x1=1−x21
逆推一下这个式子可以得到:
f
p
(
x
)
=
1
1
−
x
2
f
p
(
x
)
=
1
+
x
2
f
p
(
x
)
f
p
(
x
)
=
1
+
0
+
x
2
+
0
+
x
4
+
⋯
\\f_p(x)=\frac{1}{1-x^2} \\f_p(x)=1+x^2f_p(x) \\f_p(x)=1+0+x^2+0+x^4+\cdots
fp(x)=1−x21fp(x)=1+x2fp(x)fp(x)=1+0+x2+0+x4+⋯
所以函数
f
(
x
)
f(x)
f(x)的意义是什么?由于两个积性函数的狄利克雷卷积仍是积性函数,那么当且仅当一个数的所有质因数的幂次可以被
2
2
2整除时,
f
(
x
)
=
1
f(x)=1
f(x)=1,否则
f
(
x
)
=
0
f(x)=0
f(x)=0。说明
f
(
x
)
=
[
x
i
s
a
s
q
u
a
r
e
n
u
m
b
e
r
]
f(x)=[x\space is \space a\space square\space number]
f(x)=[x is a square number]。
此时原式等于:
⇒
∑
T
=
1
n
⌊
n
T
⌋
f
(
T
)
=
∑
T
=
1
n
⌊
n
T
⌋
[
T
i
s
a
s
q
u
a
r
e
n
u
m
b
e
r
]
=
∑
T
=
1
n
⌊
n
T
2
⌋
\begin{aligned} &\Rightarrow\sum\limits_{T=1}^n\lfloor\frac{n}{T}\rfloor f(T) \\&=\sum\limits_{T=1}^n\lfloor\frac{n}{T}\rfloor [T\space is \space a\space square\space number] \\&=\sum\limits_{T=1}^n\lfloor\frac{n}{T^2}\rfloor \end{aligned}
⇒T=1∑n⌊Tn⌋f(T)=T=1∑n⌊Tn⌋[T is a square number]=T=1∑n⌊T2n⌋
时间复杂度
O
(
n
)
O(\sqrt n)
O(n) 。