题目链接
做法
首先令$f(i)$表示$i$的因数和,由于$n$的范围并不大,我们可以用埃氏筛方便的求出。
直接把式子列出来,要求的就是
改变一下枚举顺序,先枚举$gcd$
把$k$提出来得到
根据莫比乌斯反演的常见套路把后面带$gcd$的反演了。
再令$T=kd$
这样我们就成功做到了把$n,m$与$f(k)$分离出来了。
由于这题并不强制在线,我们先把所有询问离线下来,在将$a$从小到大枚举依次加入$看$的贡献,用树状数组维护$f(k)*\mu(\frac{T}{k})$的前缀和。再对$T$整除分块就能求得答案了。
总复杂度$O(n*log^2n+q\sqrt{n}logn)$
打个表可以知道,$n$在$10^5$范围内因数和最大为$403200$,所以树状数组的$log$实际上是$log(403200)$,最后注意读进来$a$的时候和$403200$取个$min$就行了。
代码
1 |
|