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」は嫌な罠でしたね。