Submission

Status:

PPPPPPPPPP

Subtask/Task Score:

100/100

Score: 100

User: Whatthepoop

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

Language: c

Time: 0.002 second

Submitted On: 2025-10-11 22:16:08

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

void reverse(char *str, int start, int end){    
    while(start < end){
        char temp = str[start];
        str[start] = str[end];
        str[end] = temp;
        start++;
        end--;
    }
}

int main(){
    char s[100];
    scanf("%s", s);
    int n = strlen(s);

    int dec = 0;
    int base = 1;
    for (int i = n - 1; i >= 0; i--) {
        int digit;
        if (s[i] >= '0' && s[i] <= '9') {
            digit = s[i] - '0';
        } else {
            digit = s[i] - 'A' + 10;
        }

        dec += digit * base;
        base *= 16;
    }

    char bin[100];
    int i = 0;
    int temp1 = dec;
    while(temp1 > 0){
        bin[i] = (temp1 % 2) + '0';
        temp1 /= 2;
        i++;
    }
    bin[i] = '\0';

    reverse(bin, 0, i-1);
    printf("%s\n", bin);

    char oct[100];
    int j = 0;
    int temp2 = dec;
    while(temp2 > 0){
        oct[j] = (temp2 % 8) + '0';
        temp2 /= 8;
        j++;
    }
    oct[j] = '\0';

    reverse(oct, 0, j-1);
    printf("%s\n", oct);

    return 0;
}