Submission

Status:

PPPPPPPPPP

Subtask/Task Score:

100/100

Score: 100

User: Newton4566

Problemset: แปลงเลขฐาน

Language: cpp

Time: 0.004 second

Submitted On: 2026-09-21 15:50:44

#include <iostream>
#include <string>
#include <algorithm>
using namespace std;

string toBase(long long n, int b) {
    if (n == 0) return 0;
    string digits = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    string s;
    bool neg = n < 0; //check if n < 0?
    if (neg) n = -n; //if n < 0, make it become positive
    while (n > 0) {
        s += digits[n % b];
        n /= b;
    }
    if (neg) s += '-';
    reverse(s.begin(), s.end());

    return s;
}

long long fromBase(const string& s, int b) {
    long long result = 0;
    size_t i = 0;
    bool neg = false;

    if (!s.empty() && s[0] == '-') {
        neg = true;
        i = 1;
    }

    for (; i < s.size(); i++) {
        char c = s[i];
        int d;
        if (c >= '0' && c <= '9') d = c - '0';
        else d = c - 'A'  + 10;
        result = result * b + d;
    }

    return neg ? -result : result;
}

int main() {
    string input;
    cin >> input;

    long long number = fromBase(input, 16);

    string base2 = toBase(number, 2);
    string base8 = toBase(number, 8);

    cout << base2 << endl << base8 << endl;

    return 0;
}