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