본문 바로가기

코딩테스트 연습/Baekjoon

[Baekjoon] 2745번: 진법 변환 (c++)

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

11005와 반대로 B진수인 N을 10진수로 바꾸는 문제다. trans안에 09와 10이상인 수는AZ까지 모두 변환해주고,
B^i * trans[i] 를 이용해 B진수->10진수로 변환해준다.

코드

//2745
#include <iostream>
#include <string>
#include <cmath>
using namespace std;
#define SIZE 1000001

int main(int argc, const char * argv[]) {

    int B;
    string N;
    cin >> N >> B;
    int leng= N.length();
    int trans[SIZE];
    int num=0;
    
    for(int i=0;i<36;i++){
        if(N[i] >= '0' && N[i] <= '9') trans[leng-i-1] = N[i]-'0';
        else if (N[i] >= 'A' && N[i] <= 'Z') trans[leng-i-1] = N[i]-55;
    }
    
    for(int i=0;i<leng;i++){
        num += pow(B, i)* trans[i];
    }
    
    cout << num;
    
    return 0;
}