AtCoder ABC 164 B – Battle Python解説

スポンサーリンク

Battle

高橋君と青木君がモンスターを闘わせます。
高橋君のモンスターは体力が A で攻撃力が B です。 青木君のモンスターは体力が C で攻撃力が D です。
高橋君→青木君→高橋君→青木君→… の順に攻撃を行います。 攻撃とは、相手のモンスターの体力の値を自分のモンスターの攻撃力のぶんだけ減らすことをいいます。 このことをどちらかのモンスターの体力が 0 以下になるまで続けたとき、 先に自分のモンスターの体力が 0 以下になった方の負け、そうでない方の勝ちです。
高橋君が勝つなら Yes、負けるなら No を出力してください。

AtCoder Beginner Contest 「Battle」

モンスターの体力が0以下になるまでの攻撃回数で求めていきます。
高橋君が先攻なので、モンスターの体力が0以下になる攻撃回数が同じ場合は高橋君が勝つ点を忘れずに。

import math

a, b, c, d = map(int, input().split())

x = math.ceil(c / b)
y = math.ceil(a / d)

if x <= y:
    print("Yes")
else:
    print("No")

攻撃回数を求めるには、相手モンスターの体力を自身のモンスターの攻撃力で割ります。
余りが出る場合は小数点を切り上げる必要があるので、上記のコードでは、mathモジュールのmath.ceilを使い小数点を切り上げています。

a, b, c, d = map(int, input().split())

x = -(-c // b)
y = -(-a // d)

if x <= y:
    print("Yes")
else:
    print("No")

最初のコードと内容的には一緒ですが、こちらはmath.ceilを使わずに小数点を切り上げています。

AtCoderB問題

Posted by cheese