■やりたいこと
『正の整数 A, B について、Bを最低何倍すればA以上になるか。(答えは整数倍とする。)』を、
プログラムの整数除算(小数点以下切り捨て)で求めたい。
たとえば、A = 7, B = 2 のときは 4 倍。
たとえば、A = 8, B = 4 のときは 2 倍。 (割り切れる時は切り上げない。)
■どうすればよいか
では切り捨てが発生してしまうが、代わりに で計算できる。
■計算できることの説明
以下のケースに分けて考える。
番号 | ケース | 期待する答え |
---|---|---|
① | A が B より小さい | 1 倍 |
② | A が B 以上で、A を B で割った余りが 0 | A / B 倍 |
③ | A が B 以上で、A を B で割った余りが 0 でない | A / B + 1 倍 |
以下、行間が空いているかもしれないが、エスパーしてほしい。
ケース①
A - 1 は 0 以上 B 未満なので、第二項は 0 となる。
ケース②
B - 1 は 0 以上 B 未満なので、第二項は 0 となる。
ケース③
A を B で割った余りを C とする。
C - 1 は 0 以上 B 未満なので、第三項は 0 となる。