在李煜东的书上做题,做到余数之和(https://www.luogu.com.cn/problem/P2261),发现这个是整除分块的模板题。。不是很会,学学。
看完上题,对于这个式子$$ \sum _{i=1}^{n} \lfloor \frac{n}{i} \rfloor $$ 一定不会陌生
这个式子在oi数论中十分常见,莫比乌斯反演等都会用到。求解这个式子,显然可以O(n)解决,但是遇到一些毒瘤出题人,毒瘤题(好像很常见),n可以上 $ 10^{????} $
那么显然不是要O(N)求解了。。而是要其他方法,比如--数论分块( $O(\sqrt n) $)(好像数据再打点这个也会die掉)
by 打表 我们可以发现
\[\forall i \in [i,\lfloor \frac{n}{\lfloor \frac{n}{i} \rfloor} \rfloor ] ,\lfloor \frac{n}{i} \rfloor的值都相等 \]
证明
1.打表
2.推导式子
\[设 T= \lfloor \frac{n}{ \lfloor \frac{n}{i} \rfloor } \rfloor \\ 显然f(i)=\frac {n}{i}单调递减 \\ T \ge \lfloor \frac {n}{ \frac{n}{i} } \rfloor =i \\ 所以 \lfloor \frac{n}{T} \rfloor \le \lfloor \frac{n}{i} \rfloor \qquad \qquad (1) \\ \\ \lfloor \frac{n}{T} \rfloor \ge \lfloor \frac{n}{ \frac{n}{\lfloor \frac{n}{i} \rfloor} } \rfloor =\lfloor n/n* \lfloor \frac{n}{i} \rfloor \rfloor =\lfloor \frac{n}{i} \rfloor \\ 所以 \lfloor \frac{n}{T} \rfloor \ge \lfloor \frac{n}{i} \rfloor \qquad \qquad (2) \\ 联立(1)(2)得出 \lfloor \frac{n}{T} \rfloor =\lfloor \frac{n}{i} \rfloor \\ 其实,还可以假设这个结论是成立的,已经知道某个块的块内值为k,块的左端点为l,求右端点?\\ \forall i \in [l,r],\lfloor \frac{n}{i} \rfloor =\lfloor \frac {n}{l} \rfloor =k \\ 而且ik\le n 显然 r就是 max \{ i \} ,ik \le n r=\lfloor \frac {n}{k} \rfloor = \lfloor \frac{n}{\lfloor \frac{n}{i} \rfloor} \rfloor \]
证毕
$ \forall i \in [1,n],\lfloor \frac{n}{i} \rfloor$ 最多有\(2 \sqrt n\) 个取值。
当\(i \le \sqrt n\)时,i有\(\sqrt n\)种的选择,\(\lfloor \frac{n}{i} \rfloor\)也最多有\(\sqrt n\)个不同的值
当\(i>\sqrt n 时,\lfloor \frac{n}{i} \rfloor <\sqrt n\),所以\(\lfloor \frac{n}{i} \rfloor\)最多也只有\(\sqrt n\)的不同的值
所以,\(\forall i \in [1,n]\),\(\lfloor \frac{n}{i} \rfloor\)最多有2$\sqrt n $个不同的取值,即最多有\(2\sqrt n\)个块内值相等的块组成。
时间复杂度\(O(\sqrt n)\)
附上一个小模板
for(int l=1,r;l<=n;l=r+1)
{
r =k/l ? min(k/(k/l),n) :n;//int默认去除小数部分,就是只会向下取整
ans+=(r-l+1)*(n/l);
}
作者:{2519},转载请注明原文链接