整除分块的向上向下取整写法


首先向上取整有一个证明,这个我之前写过


推导

对于向上取整,求:

\[\sum_{i=1}^{n} \left \lceil \frac{n}{i} \right \rceil \]

设:

\[\left \lceil \frac{n}{i} \right \rceil=m \]

对于相同的 \(m\) ,满足:

\[i\times (m-1)< n\le i\times m \]

\[\frac{n}{m}\le i<\frac{n}{m-1} \]

因为 \(i\) 是整数

\[\frac{n}{m}\le i\le \frac{n-1}{m-1} \]

所以对于当前找到的一个左端点 \(i\),求出对应的 \(m\),然后算出值 \(m\) 相同的区间的右端点就好了。

注意在向上取整的时候要特判 \(m=1\) 的情况,右边界为 \(n\),不然会出现 \(\frac{n}{0}\) 导致RE。

向下取整超级简单,更好推还不用特判,对于点 \(i\),右边界就等于:

\[\left\lfloor \frac{n}{\left\lfloor\frac{n}{i}\right\rfloor}\right\rfloor \]


练习

[HAOI2011]Problem b

简单的运用。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM