数表 题解
“当你想不出来一道题的时候就想一下排序”
先不考虑 \(a\),求
\[ \begin{aligned}
&\sum_{i=1}^n\sum_{j=1}^m\sigma_1(\gcd(i,j))\\
=&\sum_{i=1}^n\sum_{j=1}^m\sum_{d=1}^{\min(n,m)}[d=\gcd(i,j)]\sigma_1(d)\\
=&\sum_{d=1}^{\min(n,m)}\sigma_1(d)\sum_{i=1}^{\left\lfloor\frac nd\right\rfloor}\sum_{j=1}^{\left\lfloor\frac md\right\rfloor}\sum_{p\mid i\land p\mid j}\mu(p)\\
=&\sum_{d=1}^{\min(n,m)}\sigma_1(d)\sum_{p=1}^{\min\left(\left\lfloor\frac nd\right\rfloor,\left\lfloor\frac md\right\rfloor\right)}\mu(p)\left\lfloor\dfrac n{dp}\right\rfloor\left\lfloor\dfrac m{dp}\right\rfloor\\
=&\sum_{k=1}^{\min(n,m)}\left\lfloor\dfrac nk\right\rfloor\left\lfloor\dfrac mk\right\rfloor\sum_{d\mid k}\sigma_1(d)\mu\left(\dfrac kd\right)
\end{aligned}
\]
考虑 \(a\):发现对答案起作用的只是 \(\sigma_1(d)\le a\) 的 \(d\)
把 \(a\) 的询问从小到大排序
\(a\) 每增大就会造成一些 \(\sigma_1(d)\) 起作用
倍数筛找到受影响的 \(k\),单点加
查询的时候是数论分块,需要区间查
这个东西使用树状数组维护