转化一下问题,我们令
g
[
i
]
g[i]
g[i]表示满足
(
a
×
b
)
∣
i
(a\times b) | i
(a×b)∣i的有序正整数对
(
a
,
b
)
(a ,b)
(a,b)的个数。
则
∑
i
=
1
n
∑
d
∣
i
f
[
d
]
=
∑
i
=
1
n
g
[
i
]
\sum_{i=1}^n \sum_{d|i}f[d]= \sum_{i=1}^ng[i]
∑i=1n∑d∣if[d]=∑i=1ng[i]
因为对于一个
i
i
i的约数
d
d
d,都有一个
i
d
\bf\frac{i}{d}
di 的约数与之对应,并且
d
=
i
d
d=\frac{i}{d}
d=di当时,正整数对只会计算一次。
思考一下
∑
i
=
1
n
g
[
i
]
\sum_{i=1}^ng[i]
∑i=1ng[i]的实际意义,即对
a
b
c
<
n
abc<n
abc<n满足的正整数
a
,
b
,
c
a,b,c
a,b,c所能组成所有有序数对的个数
考虑
a
,
b
a,b
a,b枚举得到
c
c
c的范围计算答案(就是这么暴力) ,直接枚举好像还是
O
(
n
2
)
O(n^2)
O(n2)。
不妨限制下的
a
,
b
,
c
a,b,c
a,b,c大小关系,即令
a
<
b
<
c
a<b<c
a<b<c,最后乘上6,这样枚举的复杂度大概是
O
(
n
)
O(\sqrt{n})
O(n)。相等的情况单独枚举,复杂度
O
(
n
)
O(\sqrt{n})
O(n)。