문제
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진법으로 출력한다.
예제 입력 1
ZZZZZ 36 |
예제 출력 1
60466175 |
더보기
Solution
#include<stdio.h>
#include<string.h>
#include<ctype.h>
int main(void)
{
char N[50]={'\0', };
int B, decimal=0, power=1;
scanf("%s %d", N, &B);
for(int i=strlen(N)-1;i>=0;i--)
{
if(isdigit(N[i]))
decimal+=power*(N[i]-'0');
else
decimal+=power*(N[i]-'A'+10);
power*=B;
}
printf("%d\n", decimal);
return 0;
}
728x90
'백준 알고리즘' 카테고리의 다른 글
<백준 알고리즘> 4101번: 크냐? (0) | 2020.11.24 |
---|---|
<백준 알고리즘> 9085번: 더하기 (0) | 2020.11.24 |
<백준 알고리즘> 10610번: 30 (0) | 2020.11.23 |
<백준 알고리즘> 1748번: 수 이어 쓰기 1 (0) | 2020.11.23 |
<백준 알고리즘> 2484번: 주사위 네개 (0) | 2020.11.23 |