ACM数论题目6 余数求和(整除分块)

声明:
题目来源: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,k103
对于 60 % 60 \% 60% 的数据,保证 n , k ⩽ 1 0 6 n, k \leqslant 10^{6} n,k106
对于 100 % 100 \% 100% 的数据,保证 n , k ⩽ 1 0 9 n, k \leqslant 10^{9} n,k109

题解思路:

引理1:整除分块
引入:计算 ∑ i = 1 n ⌊ n i ⌋ \sum_{i=1}^{n}\left\lfloor\frac{n}{i}\right\rfloor i=1nin,时间复杂度应该是多少?
显然不应该是 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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值