サーバル問題 (ABC 153 A) の焼き直し問題。今度は制約が大幅に強化して、long long
型についても学ぶ問題となっている。
問題概要
体力が の敵がいます。あなたは、1 回攻撃をすることで敵の体力を 減らすことができる。
敵の体力を 0 以下にするためには、最小で何回攻撃をする必要があるか?
制約
考えたこと
求めたい値は、 を で割ったときの商を としたときに、
- が で割り切れるとき: 回
- が で割り切れないとき: 回( 回攻撃後に敵の体力が余るため)
となる。これは、いわゆる切り上げ処理である。答えは「 を で割ったときの商」に一致する。その理由については、次の記事を参照。
コード
今回、C++ では 32 bit 整数である int
型を用いるとオーバーフローしてしまうことに注意しよう。64 bit 整数である long long
型を用いている。
#include <bits/stdc++.h> using namespace std; int main() { long long A, B; cin >> A >> B; cout << (A + B - 1) / B << endl; }