AtCoder が提供しているABC(AtCoder Beginner Contest)314 のA問題をC++とPythonで解いてみました。ABC314は、2023年8月12日21:00に実施されました。
AtCoder の紹介はこちらに、プログラミングの方針はこちらに記事があります。
A問題 3.14(Difficulty : 30)
問題はリンク先をご覧ください。
文字列の問題として解きました。AtCoder Problems による Difficulty は 30 でした。
解答案
C++ プログラム例(ABC314A)
円周率は与えられた値を使います。小数点第N位まで出力することを、与えられた円周率の文字列をN+2文字まで出力すると読み替えます。2文字は、整数部の ‘3’ と小数点の ‘.’ となります。
C++ では、substr を使いました(10行目)。以下が、C++プログラムとなります。
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin >> n;
string s = "3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679";
cout << s.substr(0, 2 + n) << endl;
return 0;
}
AC(Accepted=正しいプログラム)と判定されました。
Python プログラム例(ABC314A)
Python ではスライス記法を使いました(5行目)。
文字列が102文字あるため、1行の長さが79桁を超えました。PEP 8(日本語版)を満たしませんが、分かりやすさを優先して、このまま紹介します。
"""AtCoder Beginner Contest 314 A"""
n = int(input())
s = "3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679"
print(s[:n + 2])
こちらも「AC」と判定されました。
最後に
314回目のABCでした。A問題のタイトルは、ずばり “3.14” でした。
このABC314から、使用できる言語とライブラリが更新されました。言語選択によりC++20の機能が使えるようになりました。Python も CPython のバージョンは、3.11.4 まで更新されていました。
引き続き ABC の問題を紹介していきます。