数表 题解

“当你想不出来一道题的时候就想一下排序”

先不考虑 \(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\),单点加

查询的时候是数论分块,需要区间查

这个东西使用树状数组维护

posted @ 2024-04-20 23:13  Laijinyi  阅读(3)  评论(0编辑  收藏  举报