AtCoder ABC 229 B – Hard Calculation Pyhton解説

スポンサーリンク

Hard Calculation

正整数 A,B が与えられます。
A+B を(十進法で)計算する時、繰り上がりが生じないなら Easy 、生じるなら Hard と出力してください。

AtCoder Beginner Contest「Hard Calculation」

A、Bの各桁を足していき、繰り上がりが発生するならHard、繰り上がりが発生しなければEasyを出力します。

a, b = input().split()

a = a[::-1]
b = b[::-1]

for i in range(min(len(a), len(b))):
    if int(a[i]) + int(b[i]) >= 10:
        print("Hard")
        break
else:
    print("Easy")

与えられるA, Bは桁数が違う場合があるので先頭から順に足していくと間違いになる可能性があります。ですので、上記のコードでは文字列でA, Bを受け取り、a = a[::-1], b = b[::-1]を使って、文字列を反転させて一の位から調べていきます。それと、ループする回数も桁数が小さい方に合わせたいのでmin(len(a), len(b))を使い、最小値を取得しています。あとは、int(a[i]) + int(b[i]) >= 10で繰り上がりが発生しているか確認して完了です。

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

while a > 0 and b > 0:
    if a % 10 + b % 10 >= 10:
        print("Hard")
        break
    a //= 10
    b //= 10
    
else:
    print("Easy")

上記のコードはA, Bをそれぞれ10で割った余り(a % 10, b % 10)を求めています。余りの和が10以上であれば繰り上がりが発生するのでHard、そうでなければEasyを出力。While文を使い、この操作をa > 0 and b > 0の条件が満たされなくなるまで続けます。

AtCoderB問題

Posted by cheese