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