推一下蒟蒻 $\color{green}{\texttt{博客}}$

原题链接~


粗略捞了一眼题解区,觉得有些比较重要的细节不是很懂,自己瞎撞撞终于搞明白乐。/kk

所以本篇文章用于解释一些思维上的细节。

一、$\tau*\mu=1 $ ?

我们了解到 $\sum_{d|n} \mu(d)\cdot 1=[n=1]$ ,表达成卷积形式有:

而当我们展开 $\tau$ 可得:

等式两边同卷 $\mu$ :

用 $\epsilon$ 换 $1*\mu$ :

因为 $1*\epsilon=1$ ,所以我们就证得了:

二、大众推柿子思路

_默认 $n<m$_

这样我们就有了一个看上去最终能用的式子。

此时复杂度不严格地说应该是一只 $\log$ ,众所不知,他跑不过去。如果你很松那另当别论

我们着手狄利克雷后缀和优化后两个 $\sum$ 。

三、狄利克雷后缀和?

对于形如 :

的式子,我们可以用狄利克雷后缀和优化到 $\mathcal{O}(n\log\log m)$

具体实现如下:

1
2
3
4
5
6
7
8
/*len——质数表长度;v[]——质数表;A[]——后缀和函数*/
for (int i = 0; i < len; i++)
{
for (int j = N / v[i]; j; j--)//可以理解成考虑每个质因数对后缀和的影响
{
A[j] = (A[j] + A[j * v[i]]) % MOD;
}
}

我们可以用这个来优化后两个 $\sum$ 。

最后获得了约为 $\mathcal{O}(n\log\log m)$ 的优秀复杂度。


码字不易,笔者叹气。