AtCoder が提供しているABC(AtCoder Beginner Contest)288 のA問題をC++とPythonで解いてみました。ABC288は、2023年2月4日21:00に実施されました。
AtCoder の紹介はこちらに、プログラミングの方針はこちらに記事があります。
A問題 Many A+B Problems(Difficulty : 6)
問題はリンク先をご覧ください。
足し算の結果を繰り返し表示します。AtCoder Problems による Difficulty は 6 でした。
解答案
問題を解く方針を書きだします。
- N を読み込む。
- N 回以下を行う。
- Ai と Bi を読み込む。
- Ai と Bi の和を出力する。
C++ プログラム例(ABC288A)
C++(およびC言語)の整数型の変数には、使える範囲があります。今回の問題の場合、
$$-10^9 \leqq A_i,\;B_i \leqq 10^9$$
という制約があるため、和の範囲は以下となります。
$$-2 \times 10^9 \leqq A_i + B_i \leqq 2 \times 10^9$$
一方、32ビット符号付き整数の範囲は、以下となります。
$$-2147483648 \; ~ \; 2147483647$$
今回の問題は32ビット符号付き整数(int)を使ってよいことが分かります。なお、C++(C言語)の整数型の大きさについては、過去に記事にしました。詳しく知りたい方は、「C言語:整数の大きさのまとめ」をご覧ください。
以下が、C++プログラムとなります。
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin >> n;
for (int i = 0; i < n; ++i) {
int a, b;
cin >> a >> b;
cout << a + b << endl;
}
return 0;
}
AC(Accepted=正しいプログラム)と判定されました。
Python プログラム例(ABC288A)
Python は、整数の大きさに制限がありません。このため、C++ にあった整数型の大きさ(大きな整数や小さな整数)を意識する必要がありません。
"""AtCoder Beginner Contest 288 A"""
n = int(input())
for _ in range(n):
a, b = map(int, input().split())
print(a + b)
こちらも「AC」と判定されました。
最後に
問題で問われていることは簡単でしたが、整数として扱える範囲を考えるきっかけになりました。
引き続き ABC の問題を紹介していきます。