【ABC169 B】「Multiplication 2」を解く【Python3】

「AtCoder」解説一覧へ

N個の整数 A1 , … , AN をすべて掛け合わせた数字を求める問題です。

ただし、1018を超える場合は「-1」を出力します。

提出
n = int(input())
a = list(map(int, input().split()))
ans = 1

if 0 in a:
    print(0)
    exit()

for i in range(n):
    ans = ans * a[i]
    if ans > 10**18:
        print(-1)
        exit()

print(ans)

入力は全て整数です。Aiはリストaに代入しています。

リスト内の要素を1つずつ乗算していくのですが、その前にリストに「0」があるかを判定します。

これをしておかないと、「ans」が1018を超えた後に0がある場合、「-1」と出力され、「WA」になります。

1018を超えずにfor文が終了した場合に、「ans」をそのまま出力します。

余談ですが、「0」は嫌な罠でしたね。

【ABC169】解説記事リスト

「AtCoder」解説一覧に戻る

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です