题面
∑ i = 1 n ∑ j = 1 m [ g c d ( i , j ) ≤ a ] ∗ g c d ( i , j ) \sum_{i=1}^{n}\sum_{j=1}^{m}[gcd(i,j)\le a]*gcd(i,j) i=1∑nj=1∑m[gcd(i,j)≤a]∗gcd(i,j)
题解
看到式子明显要莫比乌斯反演,于是变成:
∑
x
=
1
m
i
n
(
n
,
m
)
⌊
n
x
⌋
⌊
m
x
⌋
∑
d
∣
x
a
μ
(
x
d
)
d
\sum_{x=1}^{min(n,m)}\lfloor\frac{n}{x}\rfloor\lfloor\frac{m}{x}\rfloor\sum_{d|x}^{a}\mu(\frac{x}{d})d
x=1∑min(n,m)⌊xn⌋⌊xm⌋d∣x∑aμ(dx)d
那么一般的题做到这里肯定就是要线性筛
∑
d
∣
x
a
μ
(
x
d
)
d
\sum_{d|x}^{a}\mu(\frac{x}{d})d
∑d∣xaμ(dx)d了,但是这里筛不了,他不是积性的,于是强行将询问按a排序,变成离线做法,a不断递增的时候只需要跟着a更新
∑
d
∣
x
a
μ
(
x
d
)
d
\sum_{d|x}^{a}\mu(\frac{x}{d})d
∑d∣xaμ(dx)d的值即可,每次查询前缀和有点麻烦,这时候用一个树状数组维护即可。
或者其实不用树状数组,把每次前缀和的询问从小到大排序,然后依次返回(感觉这样写会累死,并且复杂度差不多)
感悟
这道题我出过,没想到在这里被撞了(稍微有一点不同,近乎一样),但是我出的题没有想去离线做,而是直接固定a的大小,感觉这题最大的创新就是这个树状数组+数论吧,SD的数论题真的有意思,建议刷数论着重写SD的题