整除分块正确性证明
看到《算法竞赛进阶指南》上对于整除分块的正确性证明略有些不太自然,这里给出我的证明方法。
我们要证明:
\[r = \lfloor \frac N {\lfloor \frac N l\rfloor} \rfloor \implies \lfloor \frac N l \rfloor = \lfloor \frac N r \rfloor
\]
其中 \(l\) 和 \(N\) 都为正整数,且正整数 \(r\) 是最大的使该式成立的 \(r\)
证明:
不妨设一个正整数 \(n\),使得
\[\lfloor \frac N l \rfloor = n
\]
根据下取整函数的性质,我们能将上式转化为不等式,从而去掉下取整函数:
\[n \le \frac N l < n + 1
\]
化为关于 \(l\) 的不等式:
\[\frac N {n+1} < l \le \frac N n
\]
由此,我们知道,\(l\) 在上述的范围内时,\(\lfloor\dfrac N l \rfloor\) 取得的值是一样的,因此:
\[l \le r \le \frac N n = \frac N {\lfloor \frac N l \rfloor}
\]
引理:\(n\le x \Leftrightarrow n \le \lfloor x \rfloor\),其中 \(n\) 为整数,\(x\) 为实数
这个引理还是很显然的,但是为了严谨,我们还是证明一下:
先证充分性:根据定义 \(x < \lfloor x \rfloor + 1\),则 \(n \le x < \lfloor x \rfloor + 1\),由于 \(n\) 和 \(\lfloor x \rfloor\) 都是整数,所以 \(n\le \lfloor x \rfloor\)
再证必要性:根据定义 \(n \le \lfloor x \rfloor \le x\)
根据上述引理,
\[r \le \lfloor \frac N {\lfloor \frac N l\rfloor} \rfloor
\]
因为 \(r\) 是最大的,故
\[r = \lfloor \frac N {\lfloor \frac N l\rfloor} \rfloor
\]
证毕!