AtCoder が提供しているABC(AtCoder Beginner Contest)294 のA問題をC++とPythonで解いてみました。ABC294は、2023年3月19日21:00に実施されました。
AtCoder の紹介はこちらに、プログラミングの方針はこちらに記事があります。
A問題 Filter(Difficulty : 8)
問題はリンク先をご覧ください。
与えられた数列から偶数だけを抜き出す問題です。AtCoder Problems による Difficulty は 8 でした。
解答案
問題を以下の方針で解きます。
- N と数列 A を読み込む。
- 数列 A から偶数だけを配列 result に格納する。
- 配列 result の要素をすべて出力する。
C++ プログラム例(ABC294A)
上で記述した方針に従います。
数列Aをすべて読み込み、配列 result に偶数だけ push_back します(16行目)。そのあと、配列 result の要素をすべて出力します。
以下が、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];
}
vector<int> result;
for (int i = 0; i < n; ++i) {
if (a[i] % 2 == 0) {
result.push_back(a[i]);
}
}
for (int i = 0; i < result.size(); ++i) {
cout << result[i] << " \n"[i == result.size() - 1];
}
return 0;
}
AC(Accepted=正しいプログラム)と判定されました。
Python プログラム例(ABC294A)
Python は、リストの記述が豊富です。リストの内包記法で、result を定義します(4行目)。* を付けることにより、すべての要素を出力できます(5行目)。
"""AtCoder Beginner Contest 294 A"""
n = int(input())
a = list(map(int, input().split()))
result = [e for e in a if e % 2 == 0]
print(*result)
こちらも「AC」と判定されました。
最後に
A問題はいつも通り、解きやすい問題でした。
引き続き ABC の問題を紹介していきます。