Submission
Status:
PPPPPPPPPP
Score: 100
User: mydKN
Problemset: แปลงเลขฐาน
Language: c
Time: 0.001 second
Submitted On: 2024-10-16 22:04:41
#include<stdio.h>
int len(char str[]){
int i;
for(i=0;str[i]!='\0';++i);
return i;
}
int power(int x, int p){
int res = 1;
int i;
for(int i=0;i<p;++i){
res*=x;
}
return res;
}
void tobase(int base10, char res[], int tobase){
int cnt = 0;
while(base10){
res[cnt] = '\0';
res[cnt++] = base10%tobase + '0';
res[cnt] = '\0';
base10/=tobase;
}
int l = 0, r = len(res)-1;
while(l<r){
char tmp = res[l];
res[l] = res[r];
res[r] = tmp;
++l;
--r;
}
}
int toten(char str[], int base){
int i;
int sum = 0;
int l = len(str)-1;
for(i=0;str[i]!='\0';++i){
if(str[i] >= 'A' && str[i] <= 'Z') sum += (str[i]-55) * power(base, l-i);
else sum += (str[i]-'0') * power(base, l-i);
}
return sum;
}
int main(){
char str[100];
scanf("%s", str);
int base10 = toten(str, 16);
char res[100] = {0};
tobase(base10, res, 2);
printf("%s\n", res);
tobase(base10, res, 8);
printf("%s", res);
}