728x90
2745
2745번: 진법 변환
B진법 수 N이 주어진다. 이 수를 10진법으로 바꿔 출력하는 프로그램을 작성하시오. 10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를
www.acmicpc.net
문제
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진법으로 출력한다.
코드
//2745 진법 변환
#include <iostream>
using namespace std;
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
string N;
int B;
cin >> N >> B;
int decimal = 0;
int b = 1;
for (int i = N.size() - 1; i >= 0; i--) {
if (N[i] < 58) {
decimal += b * (N[i]-48);
}
else {
decimal += b * (N[i] - 55);
}
b *= B;
}
cout << decimal << "\n";
return 0;
}
설명
B진법 수를 10진법 수로 변경하여 출력한다.
B진법은 2~36진법이 존재한다.
아스키코드를 이용하여 문제를 풀 수 있었다.
각 자리수는 B의 n승을 의미한다. 각 자리수에 B의 n승을 곱하여 10진수로 나타낼 수 있다.
결과
난이도
◐○○○○
728x90
'알고리즘 > 백준' 카테고리의 다른 글
알고리즘(C++) / 백준 9466 : 텀 프로젝트 (0) | 2021.05.11 |
---|---|
알고리즘(C++) / 백준 2331 : 반복수열 (0) | 2021.05.11 |
알고리즘(C++) / 백준 11005 : 진법 변환 2 (0) | 2021.05.09 |
알고리즘(C++) / 백준 10451 : 순열 사이클 (0) | 2021.05.04 |
알고리즘(C++) / 백준 9613 : GCD 합 (0) | 2021.05.04 |
댓글