Submission
Status:
PPPPPPPPPP
Subtask/Task Score:
100/100
Score: 100
User: yourmom
Problemset: แปลงเลขฐาน
Language: cpp
Time: 0.004 second
Submitted On: 2026-10-06 13:55:10
#include <iostream>
#include <string>
using namespace std;
int main() {
string s;
cin >> s;
int n = 0;
// แปลงฐาน 16 เป็นฐาน 10
for (char c : s) {
n *= 16;
if (c >= '0' && c <= '9')
n += c - '0';
else if (c >= 'A' && c <= 'F')
n += c - 'A' + 10;
else
n += c - 'a' + 10;
}
// แสดงฐาน 2
if (n == 0) {
cout << "0\n";
} else {
string binary;
while (n > 0) {
binary = char('0' + n % 2) + binary;
n /= 2;
}
cout << binary << '\n';
}
// ต้องแปลงใหม่ เพราะ n ถูกใช้ไปแล้ว
int value = 0;
for (char c : s) {
value *= 16;
if (c >= '0' && c <= '9')
value += c - '0';
else if (c >= 'A' && c <= 'F')
value += c - 'A' + 10;
else
value += c - 'a' + 10;
}
// แสดงฐาน 8
if (value == 0) {
cout << "0\n";
} else {
string octal;
while (value > 0) {
octal = char('0' + value % 8) + octal;
value /= 8;
}
cout << octal << '\n';
}
return 0;
}