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