杜教筛 + 魔改 min_25 筛.
为了方便,记 $f(i)$ 就表示次大质因子的 $k$ 次幂.
$$
\begin{aligned}
ans&=\sum_{i=1}^n\sum_{j=1}^n f(\gcd(i,j)) \\
&=\sum_{d=1}^n f(d) \sum_{i=1}^{\lfloor\frac n d\rfloor}\sum_{j=1}^{^{\lfloor\frac n d\rfloor}} [\gcd(i,j)=1] \\
&=\sum_{d=1}^n \lfloor\frac{n}{d}\rfloor^2\sum_{t|d}\mu(t)f(\frac{d}{t})\\
&=\sum_{d=1}^n \lfloor\frac{n}{d}\rfloor^2\cdot (f*\mu)(d)
\end{aligned}
$$
对 $d$ 整除分块,就需要多次询问 $f* \mu$ 的前缀和.
记 $h(n)=\sum_{i=1}^n (f* \mu)(i)$ .
用杜教筛的套路,可以得出
$$
\sum_{i=1}^n f(n) = \sum_{i=1}^n (f \times \mu \times I) (i) = \sum_{i=1}^n h(\lfloor \frac n i \rfloor) \\
h(n)=\sum_{i=1}^n f(i)-\sum_{i=2}^n h(\lfloor \frac n i \rfloor)
$$
Latex 渲染有点问题,就用 $\times$ 代替 $*$ 作为狄利克雷卷积的符号了.
计算 $h$ 时整除分块,递归下去计算.
每次还会询问 $f$ 的前缀和,可以把 min_25 筛魔改一下,在提出因子时,如果它是次大因子,才计入贡献.
此外,还要把 $\le n$ 的每个质数贡献的 $1$ 加入 $h(n)$ .
1 | //%std |