B진법 수 N이 주어진다. 이 수를 10진법으로 바꿔 출력하는 프로그램을 작성하시오.
10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를 사용한다.
A: 10, B: 11, ..., F: 15, ..., Y: 34, Z: 35
첫째 줄에 N과 B가 주어진다. (2 ≤ B ≤ 36)
B진법 수 N을 10진법으로 바꾸면, 항상 10억보다 작거나 같다.
첫째 줄에 B진법 수 N을 10진법으로 출력한다.
#include<stdio.h>
#include<math.h>
#include<string.h>
int main() {
char n[101] = { 0 };
int b = 0;
scanf("%s %d", n, &b);//b진법으로 표현된 수 n을 입력받는다.
int len = strlen(n);
int result = 0;
for (int i = 0; i < len; i++) {
int digit = 0;
if (n[i] >= 'A' && n[i] <= 'Z') {//알파벳으로 표현된 수는 10이상인 수, A의 ASCII코드는 65,따라서 55를 빼는 것
digit = n[i] - 55;
}
else if (n[i] >= '0' && n[i] <= '9') {
digit = n[i] - '0';//int가 아니라 char로 받았기에 ASCII코드를 이용
}
result += digit * pow(b, len - 1 - i);//POW는 b^len-1-i를 만드는 함수
}
printf("%d", result);
}