具体可以参考这个博客:https://blog.csdn.net/skywalkert/article/details/50500009
主要就是运用 Dircichlet 卷积降低求积性函数前缀和的复杂度。
如果 Dircichlet 卷积的左边其中一个函数是待求前缀和的,而且卷积的另外两个函数比较好计算前缀和,那么就可以简化计算的过程。
以求 (mu) 函数的前缀和为例,我们知道
[mu * I = e
]
那么
[1=sum_{i=1}^{n} [i=1] = sum_{i=1}^{n} sum_{d|i} mu(d) = sum_{i=1}^{n} S(lfloor{frac{n}{i}}
floor) \
S(n) = 1 - sum_{i=2}^{n} S(lfloor{frac{n}{i}}
floor)
]
记忆化时,有两种方法:
- map,直观
- 开 (O(sqrt{N})) 大小的两个数组