公式
B - Odd Position Sum 解説
by
B - Odd Position Sum 解説
by
toam
初心者の方へ
- プログラミングの学習を始めたばかりで何から手をつけるべきかわからない方は、まずは practice contest の問題A「Welcome to AtCoder」をお試しください。言語ごとに解答例が掲載されています。
- また、プログラミングコンテストの問題に慣れていない方は、 AtCoder Beginners Selection の問題をいくつか試すことをおすすめします。
- C++入門 AtCoder Programming Guide for beginners (APG4b) は、競技プログラミングのための C++ 入門用コンテンツです。
- Python入門 AtCoder Programming Guide for beginners (APG4bPython) は、競技プログラミングのための Python 入門用コンテンツです。
この問題は for
文と if
文を用いて解くことができます.
まず,答えを格納する変数 ans
を 0
で初期化します.そして for
文で添え字 i
を使って配列 \(A\) を左から順にみていき,i
が奇数番目( \(1,3,5,\ldots\) 番目)であれば A[i]
を ans
に加えます.
多くのプログラミング言語では配列は 0-indexed です.そのため「奇数番目の要素」(\(A_1, A_3, A_5, \dots\))は,プログラム上では i = 0, 2, 4, ...
に対応します.したがって,i % 2 == 0
のときに加算すればよいことになります.
実装例(C++)
#include <bits/stdc++.h>
using namespace std;
int main() {
int N;
cin >> N;
vector<int> A(N);
for (int i = 0; i < N; i++) {
cin >> A[i];
}
int ans = 0;
for (int i = 0; i < N; i++) {
if (i % 2 == 0) {
ans += A[i];
}
}
cout << ans << endl;
}
実装例(Python)
N = int(input())
A = [int(i) for i in input().split()]
ans = 0
for i in range(N):
if i % 2 == 0:
ans += A[i]
print(ans)
Python ではスライス [::2]
を使って簡潔に書くこともできます.これは「\(0\) 番目から \(2\) つおきに要素を取り出す」ことを意味します:
N = int(input())
A = list(map(int, input().split()))
print(sum(A[::2]))
投稿日時:
最終更新: