数论分块
有点菜,现在才会。
之前好多篇都烂尾了,这篇不能了。
数论分块往往适合于带有向下取整的题目,即求 \(\sum f(i)g(\lfloor\frac{n}{i}\rfloor)\) 的值。
当经过某些处理后可以 \(O(1)\) 求出 \(f(r)-f(l)\) 的值时,数论分块可以 \(O(\sqrt{n})\) 求出上述式子的值。
向下取整
\(\lfloor a \rfloor\) 等于不超过 \(a\) 的最大整数,即 \(a=b+r(0\le r<1)\) 中 \(b\) 的值。
引理1
对于 \(a,b,c\in\mathbb{Z}\),\(\lfloor\frac{a}{bc}\rfloor=\lfloor\frac{\lfloor\frac{a}{b}\rfloor}{c}\rfloor\),交换 \(bc\) 同理。
证明
令 \(\frac{a}{b}=\lfloor\frac{a}{b}\rfloor+r(0\le r<1)\)。
\(\lfloor\frac{a}{bc}\rfloor=\lfloor\frac{a}{b}\times\frac{1}{c}\rfloor=\lfloor(\lfloor\frac{a}{b}\rfloor+r)\times\frac{1}{c}\rfloor=\lfloor\frac{\lfloor{a}{b}\rfloor}{c}+\frac{r}{c}\rfloor=\lfloor\frac{\lfloor\frac{a}{b}\rfloor}{c}\rfloor\)。
利用到了 \(\lfloor\frac{x+r}{c}\rfloor=\lfloor\frac{x}{c}\rfloor\),其中 \(x,r,c\in\mathbb{Z}\),\(0\le r<1\)。
证明
当 \(x\ge 0,c>0\) 时:
-
若 \(x\ne c-1\),则 \(x+r<c\),显然正确。
-
若 \(x=c-1\),同样有 \(x+r<c\),同样正确。
当 \(x,c\) 异号时,将负号提出来仍能够得到相同的结果。
引理2
对于 \(n\in\mathbb{N_+}\),有 \(|\{\lfloor\frac{n}{d}\rfloor|d\in\mathbb{N_+},d\le n\}|\le \lfloor 2\sqrt{n}\rfloor\)。
用自然语言描述,就是对于正整数 \(n\),对于所有 \(d\le n\),\(\lfloor\frac{n}{d}\rfloor\) 的取值不会超过 \(\lfloor 2\sqrt{n}\rfloor\) 个。
证明
很巧妙,从定义域和值域两方面分别进行限制。
-
若 \(d\le\sqrt{n}\),此时它的定义域的大小有了限制,不同的取值不会超过 \(\sqrt{n}\) 个。
-
若 \(d>\sqrt{n}\),则 \(\lfloor\frac{n}{d}\rfloor\le\sqrt{n}\),此时它的值域大小有了限制,同样不会超过 \(\sqrt{n}\) 个。
数论分块
首先不难注意到 \(f(x)=\lfloor\frac{n}{x}\rfloor(1\le x\le n,x\in\mathbb{Z})\) 是一个分段函数,其图像在每一段都是一个平台,并且满足单调不增。
引理
若 \(f\) 函数在 \(x\) 上有定义,显然在 \(f(x)\) 上也有定义。
证明
由于 \(f\) 在 \(x\) 上有定义,则 \(1\le x\le n\)。
-
若 \(1\le x\le\sqrt{n}\),则 \(\sqrt{n}\le f(x)\le n\)。
-
若 \(\sqrt{n}\le x\le n\),则 \(1\le f(x)\le\sqrt{n}\)。
引理2
若 \(f\) 在 \(x\) 上有定义,则 \(x=f(f(x))\)。
更抽象地讲,对于函数:
\(g\) 函数的定义域与 \(f\) 相同。
满足 \(g(x,y)=g(x,y+2\times k)\),其中 \(k\in\mathbb{Z}\)。
证明
nothing.