整除分塊的向上向下取整寫法


首先向上取整有一個證明,這個我之前寫過


推導

對於向上取整,求:

\[\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