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


推导

对于向上取整,求:

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

简单的运用。

相关文章:

  • 2022-12-23
  • 2021-11-21
  • 2022-01-16
  • 2021-11-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2022-03-07
  • 2021-05-24
  • 2022-12-23
  • 2021-08-17
  • 2021-12-27
  • 2022-12-23
相关资源
相似解决方案