【CPE一顆星選集】UVA10101 – Bangla Numbers【C++】

C++

問題

Online Judge - Offline

今回の問題は ‘kuti’ (10000000), ‘lakh’ (100000), ‘hajar’ (1000), ‘shata’ (100) のように単位が用意されていて、それを利用して入力した文字を書いていく問題です。

サンプルコード

cpe/一顆星/uva10101/01.cpp at main · mintson0517/cpe
Contribute to mintson0517/cpe development by creating an account on GitHub.

コード解説

まずこの問題で扱う数字の最大は999999999999999です。
この大きさではint形では対応できないので,long型を使用しました。

using ll = long long;

今回は単位の処理部分をsplit()関数内で行うことにしました。

void split(ll n) {
    if (n >= 10000000) {
        split(n / 10000000);
        cout << " kuti";
        n %= 10000000;
    }
    if (n >= 100000) {
        split(n / 100000);
        cout << " lakh";
        n %= 100000;
    }
    if (n >= 1000) {
        split(n / 1000);
        cout << " hajar";
        n %= 1000;
    }
    if (n >= 100) {
        split(n / 100);
        cout << " shata";
        n %= 100;
    }
    if (n)
        cout << " " << n;
}

最後に表示をさせます

int main() {
    ll n;
    int kase = 1;
    while (cin >> n) {
        cout << setw(4) << kase++ << ".";
        if (n)
            split(n);
        else
            cout << " 0";
        cout << endl;
    }

    return 0;
}

ここで注意が必要なのはケースを表示するときはsetw(4)を使うところです。

4つのスペースを獲得するコードでございます!

#include <iomanip> は “Input/Output Manipulators”が必要

タイトルとURLをコピーしました