Submission

Status:
PPPPPPPPPP

Score: 100

User: Cmoss9

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

Language: c

Time: 0.002 second

Submitted On: 2024-10-16 21:31:43

#include <stdio.h>

int power(int base,int expo) {
    int ini = 1;
    for (int i =0;i<expo;i++) {
        ini*=base;
    }
    return ini;
}

int len(char arr[]) {
    int len = 0;
    while (arr[len] != '\0') {
        len++;
    }
    return len;
}

int main () {
    char base16[1000];
    scanf("%s",base16);
    int length = len(base16);
    int base10sum = 0;
    int base16real[length];
    for (int i = 0;i<length;i++) {
        if ('0'<=base16[i]&&base16[i]<='9') {
            base16real[i] = base16[i] - '0';
        } else if ('A'<=base16[i]&&base16[i]<='F') {
            base16real[i] = base16[i] - '7';
        }
    }
    for (int i = 0;i<length;i++) {
        base10sum += base16real[i]*power(16,length-i-1);
    }
    int index2 = 0;
    int temp2 = base10sum;
    int base2[1000];
    while (temp2>0) {
        base2[index2] = temp2%2;
        temp2 /= 2;
        index2++;
    }
    char base2real[index2];
    for (int i = 0;i<index2;i++) {
        if (0<=base2[i]&&base2[i]<=9) {
            base2real[i] = base2[i] + 48;
         } else {
            base2real[i] = base2[i] + 65;
         }
    }
    char base2reverse[index2];
    for (int i = 0;i<index2;i++) {
        base2reverse[i] = base2real[index2-i-1];
        printf("%c",base2reverse[i]);
    }
    // base 8
    printf("\n");
    int index = 0;
    int temp = base10sum;
    int base8[1000];
    while (temp>0) {
        base8[index] = temp%8;
        temp /= 8;
        index++;
    }
    char base8real[index];
    for (int i = 0;i<index;i++) {
        if (0<=base8[i]&&base8[i]<=9) {
            base8real[i] = base8[i] + 48;
         } else {
            base8real[i] = base8[i] + 65;
         }
    }
    char base8reverse[index];
    for (int i = 0;i<index;i++) {
        base8reverse[i] = base8real[index-i-1];
        printf("%c",base8reverse[i]);
    }
}