けんちょんの競プロ精進記録

競プロの精進記録や小ネタを書いていきます

AtCoder ABC 367 B - Cut .0 (6Q, 灰色, 150 点)

小数点以下の「0」を除外する問題

問題概要

小数点第三位まで記述された数  X が与えられる。次のようにせよ。

  • 小数点以下の部分について、末尾に 0 を付けない
  • 末尾に過剰な小数点を付けない

制約

  •  0 \le X \lt 100

考えたこと

末尾の 0 を除外していけば良い。つまり、while 文を用いて、次のようにすればよい。


  • 文字列の末尾が '0' である限り、末尾を削除する
  • ただし、末尾が小数点 '.' になったときは、その末尾も削除する

コード

#include <bits/stdc++.h>
using namespace std;

int main() {
    string X;
    cin >> X;
    while (X.back() == '0') X.pop_back();
    if (X.back() == '.') X.pop_back();
    cout << X << endl;
}