キーワード

除算,場合分け

解説

NNMM の倍数かどうかで場合分けをします。x0x \geq 0のとき,x\lfloor x \rfloor は,xx の小数点以下を切り捨てた値を表します。

NNMM の倍数なら,ちょうど NM\frac{N}{M} 日ですべての本を読むことができます。
NNMM の倍数でないなら,NM\lfloor \frac{N}{M} \rfloor 日かけて M×NMM \times \lfloor \frac{N}{M} \rfloor 冊読み,残りの NM×NMN - M \times \lfloor \frac{N}{M} \rfloor 冊読むのに 11 日かかるので,合わせて NM+1\lfloor \frac{N}{M} \rfloor + 1 日ですべての本を読むことができます。
このように場合分けを行うことで,答えが求められます。

実装例(C++)

また,求める答えは N÷MN \div M の小数点以下を切り上げた値,つまり NM\lceil \frac{N}{M} \rceil でもあります。
多くのプログラミング言語では整数型どうしの除算では切り捨て除算が行われることを利用して,

// Java, C++など
(N + M - 1) / M

というように場合分け無しで答えを求めることもできます。

別解

制約が小さいので,シミュレーションをして解くこともできます。

実装例(C++)