영벨롭 개발 일지

[백준 BOJ][C++]2745번 진법 변환 풀이 본문

카테고리 없음

[백준 BOJ][C++]2745번 진법 변환 풀이

영벨롭 2022. 3. 4. 18:04

https://www.acmicpc.net/problem/2745

 

2745번: 진법 변환

B진법 수 N이 주어진다. 이 수를 10진법으로 바꿔 출력하는 프로그램을 작성하시오. 10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를 

www.acmicpc.net

 

 B진법 수 N을 10진법으로 변환하는 문제입니다. 

 

 N의 자리 수를 n이라고 하면 변환하는 방법은 다음과 같습니다. 

 

 

#include<iostream>
#include<string>
#include<cmath>

using namespace std;

int main(void) {

	string N;
	int B;
	int ans = 0;
	int len;
	double p;

	cin >> N >> B;

	len = N.size() - 1;

	for (int i = 0; i < N.size(); i++) {
		char c = N[i];
		int temp;
		p = pow(B, len);

		if (c >= 'A' && c <= 'Z') {
			temp = c - 65 + 10;
		}
		else {
			temp = c - 48;
		}

		ans += temp * p;
		len--;
	}

	cout << ans;

	return 0;
}
반응형