[LOJ572]Misaka Network 与求和

直接推柿子:

\[\begin{aligned} &\sum_{i=1}^N\sum_{j=1}^Nf^k((i,j))\pmod{2^{32}} \\ =&\sum_{d=1}^N\sum_{i=1}^{N/d}\sum_{j=1}^{N/d}f^k(d)\sum_{k|i,k|j}\mu(k) \\ =&\sum_{T=1}^N\left\lfloor{N\over T}\right\rfloor^2\sum_{d|T}f^k(d)\mu\left({T\over d}\right) \end{aligned} \]

定义 \(g(T)=\sum_{d|T}f^k(d)\mu\left({T\over d}\right)\),定义 \(F(x)=f^k(x)\),不难发现

\[\begin{aligned} &g=F*\mu \\ \Leftrightarrow&g*I=F*\mu*I \\ \Leftrightarrow&g*I=F \end{aligned} \]

由杜教筛,定义 \(G(n)=\sum_{i=1}^ng(i)\),那么有

\[G(n)=\sum_{i=1}^nF(i)-\sum_{i=2}^nG\left(\left\lfloor{n\over i}\right\rfloor\right) \]

而原式等于

\[\sum_{T=1}^N\left\lfloor{N\over T}\right\rfloor^2g(T) \]

对于原始的 \(\left\lfloor{N\over T}\right\rfloor^2\) 部进行整除分块,而求 \(g\) 的区间和只需求得 \(G\),而求 \(G\) 只需知道 \(\sum F(i)\),如何求这个 \(F\) ?用 \(\tt min\_25\) 就可以了。


根据 \(\tt min\_25\) 筛,我们有这样的一些定义(这里再写一遍,复习一下)

定义 \(S(i,j)\)\((1,i]\) 中最小质因数大于 \(p_j\) 的数的函数值之和,定义 \(g(i,j)\) 表示 \((1,i]\) 以内的质数或者最小质因数大于 \(p_j\) 的数的函数值之和。

那么有

\[g(i,j)= \begin{cases} \sum_{k=2}^if(k) &j=0 \\ g(i-1,j) &i<p_j^2 \\ g(i,j-1)-f(p_j)\left(g\left(\left\lfloor{i\over p_j}\right\rfloor,j-1\right)-\sum_{k=1}^{k<j}f(p_k)\right) \end{cases} \]

那么,我们就可以求 \(S(i,j)\) 了,对它分质数、合数求,那么就有

\[S(n,j)=g(n,P)-g(j,P)+\sum_{i=j+1}^{p_i\le i}\sum_{k=1}^{p_i^k\le i}f(p_i^k)\left(S\left(\left\lfloor{n\over p_i^k}\right\rfloor,i\right)+[k>1]f(1)\right) \]

最后的答案就是 \(S(n,0)+f(1)\) 了。


posted @ 2021-02-07 20:18  Arextre  阅读(80)  评论(0编辑  收藏  举报