今天在Coursera上看到一節(jié)關于向上取整的算法,自身覺得挺新奇的,自己也沒有想過類似的問題。因為在計算機中整數(shù)除法'/'表示的是向下取整的策略,但是日常生活中經(jīng)常也需要向上取整,比如話費的計算、內(nèi)存空間的分配問題,都是這樣。接下來讓我們看看向上取整的小技巧。
(A+B-1)/B
問題描述
有兩個整數(shù)A和B,A>1,B>1,UP(A/B)表示向上取整。
求證UP(A/B)=(A+B-1)/B。
證明
由于A>1、B>1,且A、B都是整數(shù),所以可以設A=NB+M
其中N為非負整數(shù),M為0到B-1的數(shù),則
A/B=N+M/B
(A+B-1)/B=N+1+(M-1)/B;
當M為0時,
int(A/B)=N,
int((A+B-1)/B)=N+int(1-1/B)=N
當M為1到B-1的數(shù)時,0<=M-1<=B-2
UP(A/B)=N+1,
int((A+B-1)/B)=N+1+int((M-1)/B)=N+1
所以對A>1、B>1的整數(shù)A、B都有:
UP(A/B)=int((A+B-1)/B)