莫比乌斯反演(一):整除分块

莫比乌斯反演(一)

前言

    终于要学莫比乌斯反演啦,封存了半年数论,为了一个星期后的南昌,不得不扩充更广的知识面。遗憾的是,打完南昌可能就要退役了。
    虽然打完南昌一站可能退役了,但是也不能放弃算法的学习。
(2019-05-26 留)

整除分块

在莫比乌斯反演一类问题中,结果经常会出现形如 ∑ i = 1 n ⌊ n i ⌋ \sum_{i = 1}^{n}{\lfloor\frac{n}{i}\rfloor} i=1nin
如果 n n n 的范围巨大,暴力 O ( n ) O(n) O(n) 的方法可能会超时。而整除分块是 O ( n ) O(\sqrt{n}) O(n ) 的方法。


现在我们要解决一个这样的问题:
∑ i = 1 n ⌊ n i ⌋ ( n ≤ 1 0 12 ) \sum_{i = 1}^{n}{\lfloor\frac{n}{i}\rfloor}\quad(n \le 10^{12}) i=1nin(n1012)

解释

参考博客:点击此链接看证明
首先我们可以想到的是 ∑ i = 1 n ⌊ n i ⌋ \sum_{i = 1}^{n}{\lfloor\frac{n}{i}\rfloor} i=1nin 里面,有很多项是重复的。例如在 n = 10 n = 10 n=10 的情况下, 1 1 1 10 10 10 项分别是 10 , 5 , 3 , 2 , 2 , 1 , 1 , 1 , 1 , 1 10,5,3,2,2,1,1,1,1,1 10532211111 。而整除分块的任务就是 ∑ i = 1 10 ⌊ 10 i ⌋ = 10 × 1 + 5 × 1 + 3 × 1 + 2 × 2 + 1 × 5 \sum_{i = 1}^{10}{\lfloor\frac{10}{i}\rfloor} = 10\times1+5\times1+3\times1+2\times2+1\times5 i=110i10=10×1+5×1+3×1+2×2+1×5


∑ i = 1 n ⌊ n i ⌋ \sum_{i = 1}^{n}{\lfloor\frac{n}{i}\rfloor} i=1nin 的性质:

  1. 不同的项最多只有 2 n 2\sqrt{n} 2n 项。
  2. ⌊ n i ⌋ \lfloor\frac{n}{i}\rfloor in 相等的最大的 i ′ i' i ⌊ n ⌊ n i ⌋ ⌋ \lfloor\frac{n}{\lfloor\frac{n}{i}\rfloor}\rfloor inn

代码

for (int l = 1, r; l <= n; l = r + 1) {
    r = n / (n / l);
    ans += (r - l + 1) * (n / l);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值