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;
}
'코딩테스트 연습 > Baekjoon' 카테고리의 다른 글
[Baekjoon] 9012번: 괄호 (c++) (0) | 2022.03.31 |
---|---|
[Baekjoon] 6588번: 골드바흐의 추측 (c++) (0) | 2022.03.31 |
[Baekjoon] 2609번: 최대공약수와 최소공배수 (c++) (0) | 2022.03.31 |
[Baekjoon] 2089번: -2진수 (c++) (0) | 2022.03.31 |
[Baekjoon] 2004번: 조합 0의 개수 (c++) (0) | 2022.03.31 |