[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)\) 了。