Submission

Status:

PPPPPPPPPP

Subtask/Task Score:

100/100

Score: 100

User: kenkong587

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

Language: c

Time: 0.003 second

Submitted On: 2026-10-04 16:05:57

#include <stdio.h>
#include <string.h>
#include <math.h>

int main(){

    char num[5];

    scanf("%s",num);

    int l = strlen(num);

    int n = 0;

    //0 = 48 and A = 65

    for(int i = 0;i < l;i++){
        if(num[i] < 65){
            n += ((int)num[i] - 48) * pow(16,l - i - 1);
        }
        else{
            n += ((int)num[i] - 55) * pow(16,l - i - 1);
        }
    }

    int a = n;
    int l1 = 0;

    while(a > 0){
        a /= 2;
        l1++;
    }

    a = n;
    int basetwo[l1];

    for(int i = 0;i < l1;i++){
        basetwo[i] = a % 2;
        a /= 2;
    }

    for(int i = l1 - 1;i > -1;i--){
        printf("%d",basetwo[i]);
    }

    printf("\n");

    int b = n;
    int l2 = 0;

    while(b > 0){
        b /= 8;
        l2++;
    }

    b = n;
    int baseeight[l2];

    for(int i = 0;i < l2;i++){
        baseeight[i] = b % 8;
        b /= 8;
    }

    for(int i = l2 - 1;i > -1;i--){
        printf("%d",baseeight[i]);
    }

    return 0;
}