【よくわかる解説!】ABC336 C問題 〜5進数への変換〜

ABC

解説動画はこちら!

コード

#include <bits/stdc++.h>
using namespace std;
using ll = long long;
#define rep(i, n) for (int i = 0; i < (n); ++i)

int main() {
  ll n; cin >> n;
    n--;

    // 5進数に変換する
    // 例: 27を5進数に変換すると, 102
    vector vec;
    // このwhile文で5進数に変換した各位の数をvectorに順に格納。(5^0の位から順に)
    // 例: vec = {2, 0, 1}を作成
    while(n > 0) {
        vec.push_back(n % 5);
        n /= 5;
    }
    // vecを逆順にする. vec = {1, 0, 2}
    reverse(vec.begin(), vec.end());

    // n = 1の場合に0となるように調整
    if (vec.empty()) vec.push_back(0);

    for (auto e : vec) cout << 2 * e;
    cout << endl;

    return 0;
}

コメント