avatar

min25筛

min25min25筛又双叒叕忘了!重新学一遍。

https://blog.csdn.net/qq_39972971/article/details/81543972

我们要求i=1nfi\sum\limits_{i=1}^{n}f_i,其中i=1nfi[isprimei]\sum\limits_{i=1}^nf_i[isprime_i]可以由i=1nik[isprimei]\sum\limits_{i=1}^ni^k[isprime_i]简单表示。

考虑类似埃筛的过程。

我们令F(n,i)=j=1nfj[minjprimei]F(n, i)=\sum\limits_{j=1}^nf_j[min_j \geq prime_i]

那么我们要求的就是F(n,1)+f1F(n,1)+f_1

F(n,i)F(n, i)怎么算?当primei>nprime_i>n时,F(n,i)=0F(n,i)=0

否则,先考虑其中质数的贡献:j=1nfi[isprimej]j=1i1fprimej\sum\limits_{j=1}^nf_i[isprime_j]-\sum\limits_{j=1}^{i-1}f_{prime_j}

然后考虑合数的贡献。暴力枚举minjmin_j和他是minjmin_j的几次方:

j=iprimej2nk=1primejk+1nF(nprimejk,j+1)fprimejk+fprimejk+1\sum\limits_{j=i}^{prime_j^2 \leq n}\sum\limits_{k=1}^{prime_j^{k+1}\leq n}F( \lfloor \frac{n}{prime_j^k} \rfloor , j+1) * f_{prime_j ^ k} + f_{prime_j^{k+1}}

这个柿子看起来非常复杂,其实非常显然(那我为啥还忘了)。

综上,primejiprime_j \leq i时,F(n,i)=j=1nfi[isprimej]j=1i1fprimej+j=iprimej2nk=1primejk+1nF(nprimejk,j+1)fprimejk+fprimejk+1F(n,i)=\sum\limits_{j=1}^nf_i[isprime_j]-\sum\limits_{j=1}^{i-1}f_{prime_j} +\sum\limits_{j=i}^{prime_j^2 \leq n}\sum\limits_{k=1}^{prime_j^{k+1}\leq n}F( \lfloor \frac{n}{prime_j^k} \rfloor , j+1) * f_{prime_j ^ k} + f_{prime_j^{k+1}}

注意我们

文章作者: ruogu
文章链接: http://ruogu-alter.github.io/2020/04/03/min25%E7%AD%9B/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 ruogu's blog

评论