整除分块学习笔记

模型

\(\large\sum^{n}_ {i=1} \lfloor{\frac{n}{i}}\rfloor\)

假设 \(n\) 等于 10,我们可以列出下表:

\(\ i\) 1 2 3 4 5 6 7 8 9 10
\(\frac{10}{i}\) 10 5 3 2 2 1 1 1 1 1

如果我们的 \(n\) 更大时,我们可以发现 \(\frac{10}{i}\) 中有许多重复的地方。

我们可以将相同的分为一块,这样可以发现块不会超过 \(2\sqrt n\) 个。

证明
我们设当前块的值为 \(m\)
\(m\le \sqrt n\) 时,\(\frac nm\) 总共的个数,不会超过 \(m\) 的个数,因此最多有 \(\sqrt n\) 个块。
\(m> \sqrt n\) 时,\(\frac nm\) 的取值应该在 \([1,\sqrt n]\) 之间,因此也最多有 \(\sqrt n\) 个块。

综上,块的个数不超过 \(2\sqrt n\)

推导

我们需要找到每个块的左右端点,设我们已知这个块的左端点 \(l\),则考虑怎么找到右端点 \(r\)

设这个块的值为 \(x\),那么对于块中的每个数 \(i\),则有 \(x=\lfloor{\frac{n}{l}}\rfloor=\lfloor{\frac{n}{i}}\rfloor\)

那么 \(r=max(i)\),因为 \(i\times x\le n\),我们可以设 \(i\times x=n\) 以此来找到最大的 \(r\)

\(\large r=\lfloor{\frac{n}{x}}\rfloor=\bigl\lfloor{\frac{n}{\lfloor{n/l}\rfloor}}\bigl\rfloor\)

下一个块的 \(l'\) 就应该是 \(r+1\)

变形

\(\mathfrak{first.}\)

\(\large\sum^{min(n,m)}_ {i=1} \lfloor{\frac{n}{i}}\rfloor\lfloor{\frac{m}{i}}\rfloor\)

\(x1=\lfloor{\frac{n}{i}}\rfloor,x2=\lfloor{\frac{m}{i}}\rfloor\)

则有 \(i\times x1\le n,i\times x2\le m\)

\(r=\max(i)\),所以 \(r=\min(\bigl\lfloor{\frac{n}{\lfloor{n/l}\rfloor}}\bigl\rfloor,\bigl\lfloor{\frac{m}{\lfloor{m/l}\rfloor}}\bigl\rfloor)\)

\(\mathfrak{second.}\)

已知 \(f(i)\)\(i\) 的约数个数,求 \(\sum_{i=1}^n f(i)\)
题目来源:P1403 [AHOI2005] 约数研究

我们直接计算每个数的约数个数显然会超时,那么我们不妨枚举每个约数的个数。

显然的 \(i\)\(n\) 中的贡献即是:\(\lfloor{\frac n i}\rfloor\)

那么问题就转换为了:求 \(\large\sum^{n}_ {i=1} \lfloor{\frac{n}{i}}\rfloor\)

整除分块即可。

\(\mathfrak{trird.}\)

已知 \(a,b,n\),求 \(\large\sum^{n}_ {i=1} \lfloor{\frac{n}{ai+b}}\rfloor\)

考虑换元,设 \(g=ai+b\)

还是一样的,则对 \(\lfloor{\frac{n}{g}}\rfloor\) 做整除分块。

\(x=\lfloor{\frac{n}{g}}\rfloor\),则有 \(i\times g\le n\)

\(r'=\max(i)\),所以 \(r'=\bigl\lfloor{\frac{n}{x}}\bigl\rfloor=\biggl\lfloor{\frac{n}{\lfloor{\frac{n}{g}}\rfloor}}\biggl\rfloor=\large\biggl\lfloor{\frac{n}{\lfloor{\frac{n}{al+b}}\rfloor}}\biggl\rfloor\)

对于 \(g=ai+b,r'=\max(g)\)

则可以推出 \(i=\frac{g-b}{a},r=\max(i)=\max(\frac{g-b}{a})=\max(\frac{r'-b}{a})\)

所以 \(r=\huge\large\Biggl\lfloor{\dfrac{\biggl\lfloor{\dfrac{n}{\lfloor{\frac{n}{al+b}}\rfloor}}\biggl\rfloor-b}{a}}\large\Bigg\rfloor\)

posted @ 2023-10-09 17:18  bhbjzyh  阅读(2)  评论(0编辑  收藏  举报