티스토리 뷰

Algorithm/BOJ

백준 2745번 C++

poopooreum 2023. 8. 13. 11:12
반응형
백준 2745번 진법 변환

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

2745번: 진법 변환

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

www.acmicpc.net



정답 코드

#include <iostream>
using namespace std;
int main() {
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);

	int b, sum = 0;
	string n;
	cin >> n >> b;

	for (int i = 0; i < n.length(); i++) {
		int tmp = 1;
		// math 라이브러리를 사용한다면 아래 for문은 생략 가능
		for (int j = 0; j < n.length() - i - 1; j++) {
			tmp *= b;
		}

		if (n[i] >= '0' && n[i] <= '9') {
			sum += (n[i] - '0') * tmp;
		}
		else {
			sum += (n[i] - 'A' + 10) * tmp;
		}
	}

	cout << sum << '\n';

	return 0;
}


문제 풀이

단순한 진법에 관한 문제입니다.
각 진법을 10진수로 계산하는 방법은
m자리 n진법 수일때 m번째 자리수에 1을 곱하고
m-1번째 자리수에 2의1승을 곱하고
m-2번째 자리수에 2의 2승을 곱하고
m번째 자리수에 2의n승을 곱한 것을 다 더하면 됩니다

반응형

'Algorithm > BOJ' 카테고리의 다른 글

백준 2748번 C++  (0) 2023.08.13
백준 2747번 C++  (0) 2023.08.13
백준 2744번 C++  (0) 2023.08.12
백준 2743번 C++  (0) 2023.08.12
백준 2742번 C++  (0) 2023.08.12
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함