Submission

Status:
PPPPPPPPPP

Score: 100

User: Nathlol2

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

Language: cpp

Time: 0.003 second

Submitted On: 2024-10-17 17:27:31

#include <iostream>
#include <string>
#include <cmath>

using namespace std;

string reverse(string n){
    int l = n.length();
    int p = l - 1;
    for(int i = 0;i<l / 2;i++){
        char temp = n[i];
        n[i] = n[p];
        n[p] = temp;
        p--;
    }
    return n;
}

int tobase10(string n){
    int l = n.length();
    int p = l - 1;
    int sum = 0;
    for(int i = 0;i<l;i++){
        if(n[i] >= 'A' && n[i] <= 'F'){
            sum = sum + (n[i] - 55) * pow(16, p);
        }else{
            sum = sum + (n[i] - '0') * pow(16, p);
        }
        p--;
    }
    return sum;
}
string tobase8(int n){
    string b8 = "";
    while(n > 0){
        b8.push_back(n % 8 + '0');
        n = n / 8;
    }
    return reverse(b8);
}
string tobase2(int n){
    string b2 = "";
    while(n > 0){
        b2.push_back(n % 2 + '0');
        n = n / 2;
    }
    return reverse(b2);
}

int main(){
    string n;
    cin >> n;
    int b = tobase10(n);
    cout << tobase2(b) << endl << tobase8(b);
}