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

对于向上取整

\(\sum_{i=1}^{n} \left \lceil \frac{n}{i} \right \rceil\)

\(\left \lceil \frac{n}{i} \right \rceil=m\)

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

\(i*(m-1)< n\le i*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\)

猜你喜欢

转载自www.cnblogs.com/zjjws/p/13393858.html