设我们要求
f
f
f的前缀和
实质就是这么一条等式
∑
i
=
1
n
∑
d
∣
i
f
(
d
)
=
∑
i
=
1
n
∑
j
=
1
⌊
n
/
i
⌋
f
(
j
)
=
∑
i
=
1
n
f
(
i
)
⌊
n
/
i
⌋
\sum_{i=1}^n\sum_{d|i}f(d)=\sum_{i=1}^n\sum_{j=1}^{\lfloor n/i \rfloor }f(j)=\sum_{i=1}^nf(i)\lfloor n/i \rfloor
i=1∑nd∣i∑f(d)=i=1∑nj=1∑⌊n/i⌋f(j)=i=1∑nf(i)⌊n/i⌋
通常左边不容易求,那么我们就将等式卷上一个简单的积性函数
g
g
g,使得左边容易求,中间也不会变得太复杂
∑
i
=
1
n
(
f
∗
g
)
(
i
)
=
∑
i
=
1
n
g
(
i
)
∑
j
=
1
⌊
n
/
i
⌋
f
(
j
)
\sum_{i=1}^n(f*g)(i)=\sum_{i=1}^ng(i)\sum_{j=1}^{\lfloor n/i \rfloor }f(j)
i=1∑n(f∗g)(i)=i=1∑ng(i)j=1∑⌊n/i⌋f(j)
然后当
i
=
1
i=1
i=1时,直接代入求解即可
我们常暴力预处理,当
n
>
=
M
a
x
N
2
/
3
n>=MaxN^{2/3}
n>=MaxN2/3时执行上述操作,并记忆化答案
答案存储于
a
[
M
a
x
N
/
n
]
a[MaxN/n]
a[MaxN/n]中即可,对于同一个MaxN不会引发冲突,原理为
⌊
⌊
n
/
a
⌋
/
b
⌋
=
⌊
n
a
b
⌋
\lfloor\lfloor n/a \rfloor/b\rfloor=\lfloor \dfrac{n}{ab}\rfloor
⌊⌊n/a⌋/b⌋=⌊abn⌋
杜教筛
最新推荐文章于 2023-09-29 19:51:34 发布