Introductio
下取整函数,或高斯函数,记作⌊x⌋,表示不超过x的最大整数。
上取整函数,记作⌈x⌉,表示不小于x的整数中最小的那个。
易得如下性质−⌊−x⌋=⌈x⌉
Python approach
python2中默认的整数除法是向下取整,根据以上性质,可以直接转化成代码:
|
|
C/C++ approach
C++中的整数除法默认是截断小数部分,比如1.5截断后变为1,-1.5截断后变为-1。可见,在正整数时是向下取整, 在负整数时是向上取整。所以简单的实现可以将其变为负数,然后再根据原来的符号输出。但是其实有更简单的做法:
|
|
propositon: ⌈a/b⌉=(a+b−1)//b 其中//代表截断除,即C++自带的除法。
Proof:
我们可以设 a=k∗b+r 其中 k=⌊a/b⌋,0<r<b ,可得
(a+b−1)//b=[(k+1)∗b+r−1]//b=k+1+(r−1)//b=k+1=⌊a/b⌋+1=⌈a/b⌉
QED