AtCoder が提供しているABC(AtCoder Beginner Contest)367 B問題をC++とPythonで解いてみました。ABC367は、2024年8月17日21:00に実施されました。
AtCoder の紹介はこちらに、プログラミングの方針はこちらに記事があります。
B問題 Cut .0(Difficulty : 43)
問題の詳細は、リンク先をご覧ください。
与えられた実数を文字列として処理します。AtCoder Problems による Difficulty は 43 でした。
解答案
C++ プログラム例(ABC367B)
実数を文字列として処理します。具体的には、後ろから文字 ‘0’ を削除して、最後の文字が ‘.’ であれば、これも削除します。C++ の string は、vector コンテナのメソッドと同じ back、pop_back を使うことができます。
以下が、C++プログラムです。
#include <bits/stdc++.h>
using namespace std;
int main()
{
string s;
cin >> s;
while (s.back() == '0') {
s.pop_back();
}
if (s.back() == '.') {
s.pop_back();
}
cout << s << endl;
return 0;
}
AC(Accepted=正しいプログラム)と判定されました。
Python プログラム例(ABC367B)
Python でも、文字列をリストとして処理をします。最後に文字列として結合(join)します。以下がプログラムです。
"""AtCoder Beginner Contest 367 B"""
s = list(input())
while s[-1] == '0':
s.pop()
if s[-1] == '.':
s.pop()
print("".join(s))
こちらも「AC」と判定されました。
最後に
このような問題は、文字列として処理した方が楽ですね。
引き続き ABC の問題を紹介していきます。