알고리즘 모음(C++)

백준 2745 - 진법 변환(C++) 본문

백준

백준 2745 - 진법 변환(C++)

공대생의 잡다한 사전 2023. 7. 2. 23:28

문제 링크입니다. https://www.acmicpc.net/problem/2745

 

2745번: 진법 변환

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

www.acmicpc.net

주어진 수를 10진수로 바꾸는 문제입니다.

ZZZZ는 36진수인데 이를 10진수로 바꾸는 과정은

Z * (36^(4-1)) + Z * (36^(3-1)) + Z * (36^(2-1)) + Z * (36^(1-1))가 됩니다.

 

다른 진법도 마찬가지로 바꾸는 방법은 같으니 이를 구현하면 됩니다.

 

자세한 것은 코드를 참고해주세요.

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <string>
#include <cstring>
#include <cmath>
#include <map>
#include <vector>

using namespace std;

string x;
int y;
int sum;

int main(){
    cin.tie(0);
    cout.tie(0);
    cin >> x >> y;
    for(int i = x.size() - 1; i >= 0; i--){
        int num = 0;
        if(x[i] >= 'A') num = 10 + (x[i] - 'A');
        else num = x[i] - '0';
        sum += (num * (int)pow(y, x.size() - i - 1));
    }
    cout << sum;
    return 0;
}

 

 

질문 및 조언은 댓글을 남겨주세요