AtCoder が提供しているABC(AtCoder Beginner Contest)300 のA問題をC++とPythonで解いてみました。ABC300は、2023年4月29日21:00に実施されました。
AtCoder の紹介はこちらに、プログラミングの方針はこちらに記事があります。
A問題 N-choice question(Difficulty : 8)
問題はリンク先をご覧ください。
演算した数値を数列から探す問題です。AtCoder Problems による Difficulty は 8 でした。
解答案
C++ プログラム例(ABC300A)
N、A、B を読み込みます。数列の値を順次読んで、読み込んだ値が A+B と一致している場合、インデックスを記憶して、ループを抜けます。
配列のインデックスは0から始まり、選択肢の番号は1から始まっているため、1加えています(14行目)。
以下が、C++プログラムとなります。
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n, a, b;
cin >> n >> a >> b;
int result;
for (int i = 0; i < n; ++i) {
int c;
cin >> c;
if (a + b == c) {
result = i + 1;
break;
}
}
cout << result << endl;
return 0;
}
AC(Accepted=正しいプログラム)と判定されました。
Python プログラム例(ABC300A)
Python では、1行で数列が読めます(3行目)。そのため、A+B と読み込んだ数列の要素を比較して一致したらループを抜けています。
リストのインデックスが0から始まることは C++ の場合と同じです(7行目)。
"""AtCoder Beginner Contest 300 A"""
n, a, b = map(int, input().split())
c = list(map(int, input().split()))
for i in range(n):
if a + b == c[i]:
result = i + 1
break
print(result)
こちらも「AC」と判定されました。
最後に
ABCの開催が300回となりました。初心者にとって参加しやすいコンテストが開催されていて、毎回楽しめています。
特にA問題は、プログラムが書けるようになったプログラミング初心者でも解くことができる問題だと思います。
引き続き ABC の問題を紹介していきます。