题意简述
给定 $n$,求 $\sum\limits_{i=1}^{n} 2\sigma_2(i)+3\sigma_1(i)+5\sigma_0(i)$
$n<=1e9$
其中 $\sigma_k(x)=x$ 所有因数的 $k$ 次方和。
思路
我们反过来想,枚举每个因数对答案产生了多少贡献。
显然,一个因数 $d$ 对答案产生的贡献就是 $2d^2+3d+5$。
那么有多少 $i$ 算到了这个 $d$ 呢?只要是 $d$ 的倍数,都能算到,所以一共有 $\lfloor \dfrac{n}{d}\rfloor$ 个。
答案变成了 $\sum\limits_{d=1}^{n} (2d^2+3d+5)\lfloor \dfrac{n}{d}\rfloor$
整除分块,一次 $O(\sqrt{n})$
代码
1 |
|