Study hard
(c++)백준 2745번: 진법 변환 본문
https://www.acmicpc.net/problem/2745
[풀이]
N에 'ZZZZZ'와 같은 문자열이 올 수 있으므로 string에 N값을 입력하였다.
N의 각 자릿수마다 (B^(자릿수)) * (해당 자리의 수)를 반복하여 모두 합하여 풀었다.
B가 11이상이고 수가 10 이상이면 위의 연산을 하기 전에 원래 숫자로 바꿔줘야 한다.
#include <iostream>
#include <string>
#include <cmath>//pow
using namespace std;
string N;
int B;
void getNum() {
int tenNum = 0;
int p = 0;
for (int i = N.size() - 1; i >= 0; i--) {
//N[i]가 10 이하면
if (N[i] >= '0' && N[i] <= '9') {
//(B^(자릿수))*(해당 자리의 수)
tenNum += pow(B, p)*int(N[i] - '0');
}
else {
//원래 숫자 찾아주기
tenNum += pow(B, p)*int(N[i] - 55);
}
p++;
}
cout << tenNum << endl;
}
int main() {
cin >> N >> B;
getNum();
return 0;
}
'백준 > 여러가지 문제들' 카테고리의 다른 글
(c++)백준 1212번: 8진수 2진수 (0) | 2020.06.17 |
---|---|
(c++)백준 1373번: 2진수 8진수 (0) | 2020.06.17 |
(c++)백준 11005번: 진법 변환 2 (0) | 2020.06.17 |
(c++)백준 9613번: GCD 합 (0) | 2020.06.17 |
(c++)백준 2609번: 최대공약수와 최소공배수 (0) | 2020.06.15 |