声明:
题目来源:https://www.luogu.com.cn/problem/P2261
题目描述
求 G ( n , k ) = ∑ i = 1 n k m o d i G(n, k)=\sum_{i=1}^{n} k \bmod i G(n,k)=∑i=1nkmodi
输入格式
输入只有一行两个整数,分别表示 n n n 和 k k k 。
输出格式
输出一行一个整数表示答案。
输入输出样例
输入 #1
10 5
输出 #1
29
说明/提示
对于 30 % 30 \% 30% 的数据,保证 n , k ⩽ 1 0 3 n, k \leqslant 10^{3} n,k⩽103 。
对于 60 % 60 \% 60% 的数据,保证 n , k ⩽ 1 0 6 n, k \leqslant 10^{6} n,k⩽106 。
对于 100 % 100 \% 100% 的数据,保证 n , k ⩽ 1 0 9 n, k \leqslant 10^{9} n,k⩽109 。
题解思路:
引理1:整除分块
引入:计算 ∑ i = 1 n ⌊ n i ⌋ \sum_{i=1}^{n}\left\lfloor\frac{n}{i}\right\rfloor ∑i=1n⌊in⌋,时间复杂度应该是多少?
显然不应该是 O ( n ) O(n) O(n).
当n=100时,我们发现,所求为
100 + 50 + 33 + 25 + 20 + 16 + 14 + 12 + 11 + 10 + 9 + 8 + 7 + 7 + 6 + 6 + 5 + 5 + 5 + 5... 100+50+33+25+20+16+14+12+11+10+9+8+7+7+6+6+5+5+5+5... 100+50+33+25+20+16+14+12+11+10+9+8+7+7+6+6+5+5+5+5...
其可能加上的值只有有限个,越往后,其连续相等的值越多,例如, i i i在 [ 51 , 100 ] [51,100] [51,100]之间所有的 ⌊ n i ⌋ \left\lfloor\frac{n}{i}\right\rfloor ⌊in