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]);
}
}