AtCoder が提供しているABC(AtCoder Beginner Contest)354 A問題をC++とPythonで解いてみました。ABC354は、2024年5月18日21:00に実施されました。
AtCoder の紹介はこちらに、プログラミングの方針はこちらに記事があります。
A問題 Exponential Plant(Difficulty : 21)
問題の詳細は、リンク先をご覧ください。
問題の記述に従い植物の高さを計算します。AtCoder Problems による Difficulty は 21 でした。
解答案
C++ プログラム例(ABC354A)
植物の高さを p とします。p に加える値 p2 は、2倍にしていきます。植物の高さ p が高橋君の身長 h を超えればループを終了します。
以下が、C++プログラムです。
#include <bits/stdc++.h>
using namespace std;
int main()
{
int h;
cin >> h;
int result = 0;
int p = 0;
int p2 = 1;
while (h >= p) {
p += p2;
p2 *= 2;
++result;
}
cout << result << endl;
return 0;
}
AC(Accepted=正しいプログラム)と判定されました。
Python プログラム例(ABC354A)
Python版も基本的な考え方は同じです。累乗演算子を使うことにより楽に書けています。以下がプログラムです。
"""AtCoder Beginner Contest 354 A"""
h = int(input())
result = 0
p = 0
while h >= p:
p += 2 ** result
result += 1
print(result)
こちらも「AC」と判定されました。
最後に
変わらず、ABCに参加しています。レートは停滞していますが、コンテストでプログラムを書くこと自体を楽しめています。
引き続き ABC の問題を紹介していきます。