본문 바로가기
Develop/백준 (Cpp)

[백준] 2745번 : 진법 변환 (C++)

by Tarra 2023. 2. 7.

2745번 : 진법 변환


문제 )

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
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
31
32
33
34
35
36
#include <iostream>
#include <string>
#include <math.h>
 
using namespace std;
 
int main()
{
    string n;
    int b;
    cin >> n >> b;
 
    int answer = 0;
    for (int i = n.length() - 1; i > -1; i--) {
        // 10진법 이상일 때
        if (b > 10) {
            // 알파벳 입력 시 대체 수
            if (n.substr(i, 1>= "A" && n.substr(i, 1<= "Z") {
                answer += (n[i] - 'A' + 10* pow(b, n.length() - i - 1);
            }
            // 그외에는 똑같음
            else {
                answer += stoi(n.substr(i, 1)) * pow(b, n.length() - i - 1);
            }
        }
        // 일반적인 진법 변환
        else {
            answer += stoi(n.substr(i, 1)) * pow(b, n.length() - i - 1);
        }
    }
 
    cout << answer;
 
    return 0;
}
 
cs

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

 

2745번: 진법 변환

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

www.acmicpc.net