#include <bits/stdc++.h>
using namespace std;
int main()
{
ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
string s;
long sum = 0;
int b,trans=0;
cin >> s >> b;
int flag = s.size() - 1;
while (flag >= 0) {
for (int i = 0; i < s.size(); i++)
{
if ('A' <= s[i] && s[i] <= 'Z') {
trans = s[i] - 'A'+10;
}
else {
trans = s[i] - '0';
}
sum += (trans * pow(b, flag));
flag--;
}
}
cout << sum;
}
진법 변환2의 문제와 거꾸로 생각해주면 된다.
흔히 2진법 계산의 결과를 다시 변환하기 전의 숫자로 돌아가는 과정을 생각하면 된다.
12를 이진법으로 나타내면 1100(2) 이다.
1100(2) = 1*2^3+1*2^2+0*2^1+0*2^0 을 해준 결과와 같다.
2진법의 계산과정을 알게되었으니, n진법도 똑같이 해주면된다.
다만, A의 시작이 10부터 Z의 끝이 35로 끝나니 +10을 해줘야 한다.
'Algorithm' 카테고리의 다른 글
[백준] 알고리즘 1978번 - 소수 찾기 (0) | 2020.12.22 |
---|---|
[백준] 알고리즘 2089번 - -2진수 문제 (0) | 2020.12.21 |
[백준] 알고리즘 11005번 - 진법 변환 2 문제 (0) | 2020.12.15 |
[백준] 알고리즘 수학 - 나머지연산, GCD, LCM, 진법변환, 소수 (0) | 2020.12.14 |
[백준] 알고리즘 2011번 - 암호코드 문제 (0) | 2020.12.14 |