题意:
对于
A
1
,
A
2
,
…
,
A
N
A_1, A_2, \ldots, A_N
A1,A2,…,AN ,求
∑
i
=
1
N
∑
j
=
1
N
l
c
m
(
A
i
,
A
j
)
\sum_{i = 1}^N \sum_{j = 1}^N \mathrm{lcm}(A_i, A_j)
∑i=1N∑j=1Nlcm(Ai,Aj) 的值。
l
c
m
(
a
,
b
)
\mathrm{lcm}(a, b)
lcm(a,b) 表示
a
a
a 和
b
b
b 的最小公倍数
题解:
如果先考虑数
A
i
A_{i}
Ai,再算
l
c
m
lcm
lcm的贡献,则难以避免
O
(
N
2
)
O(N^{2})
O(N2)的枚举,故换一个角度,考虑枚举
g
c
d
gcd
gcd,计算以这个数为
g
c
d
gcd
gcd的每对数的贡献。而对于是两个数的
g
c
d
gcd
gcd这样的条件也不好判断,故先退一步,将条件改为是两个数的公约数,于是,对于枚举的每一个
d
d
d,记
s
[
d
]
s[d]
s[d]为
∑
i
=
1
N
A
i
/
d
∗
[
d
∣
A
i
]
\sum_{i=1}^NA_{i}/d*[d|A_i]
∑i=1NAi/d∗[d∣Ai],则
d
d
d作为公约数的贡献为
s
[
d
]
2
∗
d
s[d]^{2}*d
s[d]2∗d,然后考虑计算作为真正
g
c
d
gcd
gcd时的贡献,即减去所有它的倍数的答案*倍数大小。