Computer Science/Algorithm Problem

백준 알고리즘] 2745 - 진법 변환

TwinParadox 2017. 11. 21. 23:03
728x90

시간 제한 : 1초

메모리 제한 : 128MB



문제

B진법 수 N이 주어진다. 이 수를 10진법으로 바꿔 출력하는 프로그램을 작성하시오.


10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를 사용한다.


A: 10, B: 11, ..., F: 16, ..., Y: 34, Z: 35






입력

첫째 줄에 N과 B가 주어진다. (2 ≤ B ≤ 36)


B진법 수 N을 10진법으로 바꾸면, 항상 10억보다 작거나 같다.






출력

첫째 줄에 B진법 수 N을 10진법으로 출력한다.






소스코드

#include <iostream>
#include <string.h>
#include <math.h>
using namespace std;
int main(void)
{
	char arr[100];
	int len, sum = 0, n;
	cin >> arr;
	len = strlen(arr);
	cin >> n;
	for (int i = len - 1; i >= 0; i--)
	{
		if (arr[i] >= '0' && arr[i] <= '9')
			sum += pow(n, len - 1 - i)*(int)(arr[i] - '0');
		else
			sum += pow(n, len - 1 - i)*(int)(arr[i] - 'A' + 10);
	}
	cout << sum;
}






Tip

진법 개념만 명확히 알고, 문자열 처리에 익숙하면 쉽게 문제를 풀 수 있다.

728x90