AtCoderでPythonの勉強をはじめたのですが、以下の問題に対する私の回答でRAが出てしまいます。いくつか例を入力しても正しい出力がでるので、どこが間違っているのかわかりません。恐れ入りますが、どこがどう間違っているのか教えて頂ければ幸いです。よろしくお願いします。
【問題】
N個の整数A1,A2,...ANが黒板に書かれています。あなたはこの中から整数を1つ選んで、1以上10**9(10の9乗)以下の好きな整数に書き換えます。元の整数と同じ整数に書き換えても構いません。書き換えた後のN個の整数の最大公約数の最大値を求めてください。
(問題のURLはこちらです)
https://atcoder.jp/contests/abc125/tasks/abc125_c
【私の回答】
import math
from itertools import accumulate
n = int(input())
a = list(map(int, input().split()))
fromright = list(accumulate(a, math.gcd))
a.reverse()
fromleft = list(accumulate(a, math.gcd))
fromleft.reverse()
gcd = []
gcd.append(fromleft[1])
for i in range(1, n-1):
gcd.append(math.gcd(fromright[i-1], fromleft[i+1]))
gcd.append(fromright[1])
if n == 2:
print(math.gcd(a[1], a[0]))
else:
print(max(gcd))
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/08/13 17:02