Submission

Status:

PPPPPP-PPP

Subtask/Task Score:

90/100

Score: 90

User: FIrmTInn

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

Language: cpp

Time: 0.004 second

Submitted On: 2025-10-13 23:03:27

#include<iostream>
#include<cmath>
#include<vector>
using namespace std;
int main(){
    string str1;
    int digit, idx = 0;
    long long val = 0;
    cin >> str1;
    int len = str1.length();
    int multiple = len-1;
    for(int i=0;str1[i] != '\0';i++){
        if(str1[i] >= '1' && str1[i] <= '9'){
            digit = str1[i] - '0';
        }
        else if(str1[i] >= 'A' && str1[i] <= 'F'){
            digit = str1[i] - 'A' + 10;
        }
        val += digit * pow(16,multiple);
        multiple--;
    }

    vector<int> arr1;
    for(int i=val;i>0;i/=2){
        arr1.push_back(i % 2);
    }
    vector<int> arr2;
    for(int i=val;i>0;i/=8){
        arr2.push_back(i % 8);
    }
    int size1 = arr1.size(), size2 = arr2.size();
    vector<int> arr1_re(size1);
    vector<int> arr2_re(size2);
    for(int i=size1-1;i>=0;i--){
        arr1_re[idx] = arr1[i];
        idx++;
    }
    idx = 0;
    for(int i=size2-1;i>=0;i--){
        arr2_re[idx] = arr2[i];
        idx++;
    }

    for(int i=0;i<size1;i++){
        cout << arr1_re[i];
    }
    cout << "\n";
    for(int i=0;i<size2;i++){
        cout << arr2_re[i];
    }

    return 0;
}