AtCoder が提供しているABC(AtCoder Beginner Contest)277 のA問題をC++とPythonで解いてみました。ABC277は、2022年11月12日21:00に実施されました。
AtCoder の紹介はこちらに、プログラミングの方針はこちらに記事があります。
A問題 ^{-1}(Difficulty : 11)
問題はリンク先をご覧ください。
条件を満たす配列のインデックスを求める問題です。AtCoder Problems による Difficulty は、11 でした。
「^{-1}」は、-1乗を表しています。逆引きを意味していると思います。
解答案
問題を解く方針を書きだします。
- 数列を読み込む。
- 与えられた数字と等しい数字を数列から見つける。
- そのインデックスを出力する。
C++ プログラム例(ABC277A)
数列を読みながら判断もできますが、今回はすべて vector コンテナ p に読み込みました。配列(vector コンテナ)の添え字は、0 から始まりますが、問題は、添え字を1から始めているため、1を加えて出力しています。
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n, x;
cin >> n >> x;
vector<int> p(n);
for (int i = 0; i < n; ++i) {
cin >> p[i];
}
for (int i = 0; i < n; ++i){
if (p[i] == x) {
cout << i + 1 << endl;
}
}
return 0;
}
AC(Accepted=正しいプログラム)と判定されました。
Python プログラム例(ABC277A)
Python 版として、C++ 版を書き換えました。
"""AtCoder Beginner Contest 277 A"""
n, x = map(int, input().split())
p = list(map(int, input().split()))
for i in range(n):
if p[i] == x:
print(i + 1)
こちらも「AC」と判定されました。
最後に
A問題については、内容は簡単ですが、Python のコーディング量を増やすために、解説を記事にしていきます。
引き続き ABC の問題を紹介していきます。