これはとても教育的な問題!!
問題概要
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; }