終了判定

#お題

長さ N の数列Aが与えられます。 1 つ目の要素から最も左にある奇数の要素の手前までの値の和を求めてください。
形式的には、A_iが奇数かつ、区間 [A_1, A_{i - 1}] がすべて偶数であるとき、\sum_{j=1}^{i-1}{A_j}を求めてください。

 

 


#入力

N
A_1 A_2 ... A_N

 

 

 


#出力

答えとなる数値Sを 1 行で出力してください。末尾に改行を入れ、余計な文字、空行を含んではいけません。

S

 

 

 


#コード

cnt = int(input())
a = [int(x) for x in input().split()]

total = 0

for i in a:
    if i % 2 == 0:
        total += i
    else:
        break

print(total)

 

 

 


#参考

n = int(input())
a = [int(x) for x in input().split()]

ans = 0
for ele in a:
    if ele % 2 == 1:
        break
    
    ans += ele

print(ans)

  • [int(x) for x in input().split()] で半角スペース区切られた入力値をそれぞれ整数に変換してリストを生成しています。
  • 数列 a の奇数の要素の 1 つ前までの和を求めればいいので、奇数のとき break するようにします。
  • 上記のコードの構造をとれば、奇数の要素が現れたとき、ans += ele が実行される前に break されるので、題意を満たすことができます。