AtCoder が提供しているABC(AtCoder Beginner Contest)323 のA問題をC++とPythonで解いてみました。ABC323は、2023年10月7日21:00に実施されました。
AtCoder の紹介はこちらに、プログラミングの方針はこちらに記事があります。
A問題 Weak Beats(Difficulty : 15)
問題はリンク先をご覧ください。
文字列の特定の場所が特定の文字になっているか確認する問題です。AtCoder Problems による Difficulty は、15 でした。※2023年10月15日 Difficulty を追記しました。
解答案
C++ プログラム例(ABC323A)
偶数番目の文字が ‘0’ か調べます。’0′ でない場合は、変数 result を false にします。注意としては、プログラムでは、文字列の添え字を 0 からカウントしています(配列の添え字なので)。問題では、文字列の先頭を 1 文字目としています。このため、プログラムでは、添え字 1、3、5、…、15 について調べます(10行目)。
以下が、C++プログラムとなります。
#include <bits/stdc++.h>
using namespace std;
int main()
{
string s;
cin >> s;
bool result = true;
for (int i = 1; i < s.length(); i += 2) {
if (s[i] != '0') {
result = false;
}
}
if (result) {
cout << "Yes" << endl;
} else {
cout << "No" << endl;
}
return 0;
}
AC(Accepted=正しいプログラム)と判定されました。
Python プログラム例(ABC323A)
Python 版も基本的な考え方は同じです。以下となります。
"""AtCoder Beginner Contest 323 A"""
s = input()
result = True
for i in range(1, len(s), 2):
if s[i] != '0':
result = False
print("Yes" if result else "No")
こちらも「AC」と判定されました。
最後に
今回のコンテストは私用があり久しぶりに不参加でした。問題は、バーチャルコンテストに参加して解きました。
ABC321は、不正者が多くいたようです。処置について、以下のように運営から連絡がありました。
【レーティング再計算とBANに関して】 BAN準備が整いましたので、来週平日に一斉BAN及びレーティング再計算を行う予定です。現時点では、来週水曜日を想定しております。 本日のABCはそのまま計算をしますが、後日ロールバックし、再計算を行います。
https://twitter.com/atcoder/status/1710612485915717926
再計算を待ちたいと思います。
引き続き ABC の問題を紹介していきます。