
题目描述
给出正整数$n$和$k$,计算$f(n, k)=k text{ mod } 1 + k text{ mod } 2 + k text{ mod } 3 + cdots + k text{ mod } n$的值
其中$k text{ mod } i$表示$k$除以$i$的余数
$n,k le 10^9$
题解
$$
begin{aligned}
f(n,k)
&=sum_{i=1}^{n}k text{ mod }i \
&=sum_{i=1}^{n}k - lfloor frac{k}{i} rfloor i \
&=nk - sum_{i=1}^{n} i lfloor frac{k}{i} rfloor \
end{aligned}
$$
显然$lfloor frac{k}{i} rfloor$的取值只有$O(sqrt k)$种,数论分块即可
代码
1 |
|




近期评论