Submission

Status:

PPPPPP-PPP

Subtask/Task Score:

90/100

Score: 90

User: kimza

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

Language: cpp

Time: 0.002 second

Submitted On: 2025-10-10 13:44:52

#include <iostream>
using namespace std;
int len(string str){
    int count = 0;
    for(int i=0;str[i]!='\0';i++){
        count++;
    }
    return count;
}

int power(int n,int m){
    int pownum = 1;
    if(m==0){
        return 1;
    }
    else{
        for(int i=0;i<m;i++){
            pownum*=n;
        }
        return pownum;
    }
}

void bin(int n){
    if(n == 0){
        cout << 0;
    }
    
    int binary[32];
    int i = 0;
    while(n>0){
        binary[i] = n%2;
        n = n/2;
        i++;
    }
    for(int j=i-1;j>=0;j--){
        cout << binary[j];
    }
    cout << endl;
}

void oct(int n){
    if(n == 0){
        cout << 0;
    }
    
    int binary[32];
    int i = 0;
    while(n>0){
        binary[i] = n%8;
        n = n/8;
        i++;
    }
    for(int j=i-1;j>=0;j--){
        cout << binary[j];
    }
}

int main()
{
    string str;
    cin >> str;
    int sum=0;
    int n = 0;
    for(int i=0;i<len(str);i++){
        if(str[i]>='0'&&str[i] <='9'){
            str[i]-='0';
            sum+=(int)str[i]*power(16,len(str)-i-1);
            
        }
        else if(str[i] >='A' && str[i] <='F'){
            str[i] = str[i]-55;
            sum+=(int)str[i]*power(16,len(str)-i-1);
        }
    }
    bin(sum);
    oct(sum);
    
}