これはとても教育的な問題!!
問題概要
HP が であるモンスターとサーバルは戦っている。
1 回の攻撃で HP を だけ減らすことができる。HP が 0 以下になるのに必要な攻撃回数を求めよ。
解法 (1)
を
で割ったときに、余りがあるならば追加で 1 回の攻撃が必要である。つまり
が
で割り切れるとき:
H / A回が
で割り切れないとき:
H / A + 1回
となる。
#include <bits/stdc++.h> using namespace std; int main() { int H, A; cin >> H >> A; if (H % A == 0) cout << H / A << endl; else cout << H / A + 1 << endl; }
解法 (2)
上記の解法は、実はワンライナーで書ける!!!
( H + A - 1) / A
極めて頻出なので覚えてもいいと思う。このように書ける理由については、次の記事を参照。
#include <bits/stdc++.h> using namespace std; int main() { int H, A; cin >> H >> A; cout << (H + A - 1) / A << endl; }