AtCoder が提供しているABC(AtCoder Beginner Contest)356 A問題をC++とPythonで解いてみました。ABC356は、2024年6月1日21:00に実施されました。
AtCoder の紹介はこちらに、プログラミングの方針はこちらに記事があります。
A問題 Subsegment Reverse(Difficulty : 18)
問題の詳細は、リンク先をご覧ください。
繰り返し文の練習です。AtCoder Problems による Difficulty は 18 でした。
解答案
C++ プログラム例(ABC356A)
1以上L未満の整数、L以上R以下の整数を逆順に、Rより大きくN以下の整数を出力します。
C++のfor文の条件式(真ん中にある式)が満たされないと、ループは一度も実行されずに終了します。3つの繰り返し文を使って問題を解くことができました。
以下が、C++プログラムです。
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n, L, R;
cin >> n >> L >> R;
for (int i = 1; i < L; ++i) {
cout << i << " ";
}
for (int i = R; i >= L; --i) {
cout << i << " ";
}
for (int i = R + 1; i <= n; ++i) {
cout << i << " ";
}
cout << endl;
return 0;
}
AC(Accepted=正しいプログラム)と判定されました。
Python プログラム例(ABC356A)
Python版も基本的な考え方は同じです。以下がプログラムです。
"""AtCoder Beginner Contest 356 A"""
n, L, R = map(int, input().split())
result = []
for i in range(1, L):
result.append(i)
for i in range(R, L - 1, -1):
result.append(i)
for i in range(R + 1, n + 1):
result.append(i)
print(*result)
こちらも「AC」と判定されました。
最後に
繰り返し文のちょうど良い練習問題だと思います。
引き続き ABC の問題を紹介していきます。