题目描述
有一张$n \times m$的数表,其第$i$行第$j$列$(1 \le i \le n, 1 \le j \le m)$的数值为能同时整除$i$和$j$的所有自然数之和
给定$a$, 计算数表中不大于$a$的数之和。
一共有$Q$组数据
$1 \le n, m \le 10^5 , 1 \le Q \le 2 \times 10^4$
题解
按照惯例还是先推式子,先假设没有$a$的限制,设$\sigma_k(n)=\sum_{d \mid n}d^k$
$$
\begin{aligned}
n \le m \\
\sum_{i=1}^{n}\sum_{j=1}^{m} \sum_{k \mid i \wedge k \mid j}k
&=\sum_{i=1}^{n}\sum_{j=1}^{m} \sum_{k \mid (i,j)}k \\
&=\sum_{i=1}^{n}\sum_{j=1}^{m} \sigma_1((i,j)) \\
&=\sum_{i=1}^{n}\sum_{j=1}^{m} \sum_{d=1}^{n} \sigma_1(d) [(i,j)=d] \\
&=\sum_{d=1}^{n} \sigma_1(d) \sum_{i=1}^{n}\sum_{j=1}^{m}[(i,j)=d] \\
&=\sum_{d=1}^{n} \sigma_1(d) \sum_{i=1}^{\lfloor \frac{n}{d} \rfloor} \mu(i) \lfloor \frac{n}{id} \rfloor \lfloor \frac{m}{id} \rfloor \\
&=\sum_{T=1}^{n} \lfloor \frac{n}{T} \rfloor \lfloor \frac{m}{T} \rfloor \sum_{d \mid T}\sigma_1(d)\mu(\frac{T}{d}) \\
&=\sum_{T=1}^{n} \lfloor \frac{n}{T} \rfloor \lfloor \frac{m}{T} \rfloor f(T) \\
f(T)=\sum_{d \mid T}\sigma_1(d)\mu(\frac{T}{d})
\end{aligned}
$$
$f(T)$可以线性筛预处理
将询问按照$a$排序,$f$按照$\sigma_1$排序,离线后树状数组维护
代码
1 |
|