除算,場合分け
が の倍数かどうかで場合分けをします。のとき, は, の小数点以下を切り捨てた値を表します。
が の倍数なら,ちょうど 日ですべての本を読むことができます。
が の倍数でないなら, 日かけて 冊読み,残りの 冊読むのに 日かかるので,合わせて 日ですべての本を読むことができます。
このように場合分けを行うことで,答えが求められます。
実装例(C++)
xxxxxxxxxx
using namespace std;
int main() {
int n, m; cin >> n >> m;
if(n % m == 0) {
cout << n / m << '\n';
}else{
cout << n / m + 1 << '\n';
}
return 0;
}
また,求める答えは の小数点以下を切り上げた値,つまり でもあります。
多くのプログラミング言語では整数型どうしの除算では切り捨て除算が行われることを利用して,
// Java, C++など (N + M - 1) / M
というように場合分け無しで答えを求めることもできます。
制約が小さいので,シミュレーションをして解くこともできます。
実装例(C++)
xxxxxxxxxx
using namespace std;
int main() {
int n, m; cin >> n >> m;
int book_num = n; // 残りの本の数
int res = 0; // 日数
while(book_num > 0) {
// まだ読んでない本がある
res++;
book_num -= m;
}
cout << res << '\n';
return 0;
}