Official

A - Filter Editorial by MMNMM


AtCoder をはじめたばかりで何をしたらよいか分からない方は、まずは practice contest の問題A「Welcome to AtCoder」を解いてみてください。基本的な入出力の方法が載っています。
また、プログラミングコンテストの問題に慣れていない方は、AtCoder Beginners Selection の問題をいくつか解いてみることをおすすめします。


解法 1

長さ \(N\) の配列を読み込み、先頭から順に見て偶数だけ出力すればよいです。 ある整数が偶数であるかは、\(2\) で割ったあまりが \(0\) と等しいかで判定するのがよいでしょう。

#include <iostream>
#include <vector>

using namespace std;

int main() {
    int N;
    cin >> N;

    // 長さ N の配列
    vector<int> A(N);
    // 順に入力
    for (auto&& a : A)
        cin >> a;

    for (const auto a : A) 
        // 2 で割ったあまりが 0 なら偶数
        if (a % 2 == 0)
            cout << a << " ";
    cout << endl;

    return 0;
}
N = int(input())
A = list(map(int, input().split()))

for a in A:
    # 2 で割ったあまりが 0 なら偶数
    if a % 2 == 0:
        print(a)

解法 2

また、\(A\) から奇数を取り除いた配列を新しく作ることでもこの問題を解くことができます。

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int main(){
    int N;
    cin >> N;
    
    // 長さ N の配列
    vector<int> A(N);
    // 順に入力
    for (auto&& a : A)
        cin >> a;

    // 奇数を取り除いた配列を作る
    vector<int> B{begin(A), remove_if(begin(A), end(A), [](auto i){return i % 2 != 0;})};
    // 順に出力
    for (const auto b : B)
        cout << b << " ";
    cout << endl;

    return 0;
}
N = int(input())
A = list(map(int, input().split()))

# 偶数だけを取り出した配列を作り、出力
print(*[a for a in A if a % 2 == 0])

解法 3

また、\(N\) 回整数を読み込み、読み込んだ整数が偶数ならそのまま出力することでも解くことができます。

#include <iostream>

using namespace std;

int main(){
    int N;
    cin >> N;

    // N 回繰り返す
    for (int i = 0; i < N; ++i){
        int a;
        cin >> a;
        // 読み込んだ数が偶数なら出力
        if (a % 2 == 0)
            cout << a << " ";
    }
    cout << endl;

    return 0;
}

posted:
last update: