Submission

Status:

PPPPPPPPPP

Subtask/Task Score:

100/100

Score: 100

User: Quaoar

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

Language: cpp

Time: 0.002 second

Submitted On: 2025-10-10 19:05:19

#include <stdio.h>

int pw(int a , int b){
    int product = a;
    if (b == 0){
        return 1;
    }
    for (int i = 0 ; i < b - 1; i++){
        product = product * a;
    }  
    return product;
}

int main() {
    int base = 16;
    char str[20];
    scanf("%s" , str);
    int i = 0;
    int len;
    while (str[i] != '\0'){
        i++;
        len = i;
    }
    int sum = 0;
    for (int i = 0 ; i < len ; i++){
         if (str[i] - '0' > 9){
            sum += (str[i] - '0' - 7) * pw(base , len - 1 -i);
        } else {
            sum += (str[i] - '0') * pw(base , len - 1 - i);
        }
    }
    int base2[20];
    int dec = sum;
    int cnt2;
    
    for (int i = 0 ; i < 20 ; i++){
        base2[i] = dec % 2;
        dec = dec / 2;
        if (dec == 0){
            cnt2 = i;
            break;
        }
    }
    
    for (int i = 0 ; i < cnt2 + 1; i++){
        printf("%d" , base2[cnt2 - i ]);
    }
    printf("\n");
    int base8[20];
    dec = sum;
    
     for (int i = 0 ; i < 20 ; i++){
        base8[i] = dec % 8;
        dec = dec / 8;
        if (dec == 0){
            cnt2 = i;
            break;
        }
    }
    
    for (int i = 0 ; i < cnt2 + 1; i++){
        printf("%d" , base8[cnt2 - i ]);
    }
    
 
 
    return 0;
}