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;
}