1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | #include<cstdio> #include<string> #include<iostream> #include<algorithm> using namespace std; int main(void) { string sstr; int b,ans=0; cin>>sstr>>b; for(int i=0; i<sstr.size(); i++) { //입력이 문자로 들어왔으므로 숫자로 바꿔줘야 한다. // 해당 자리수가 숫자라면 '0'만큼의 아스키 코드만 빼주면 0~9로 계산 가능 if('0'<=sstr[i] && sstr[i]<='9') ans=ans*b+(sstr[i]-'0'); //이외는 문자로 들어왔다. // 'A'만큼 빼주고 a가 10부터 시작이므로 +10 else ans=ans*b+(sstr[i]-'A'+10); } cout<<ans<<'\n'; return 0; } | cs |
(*b는 b^k하는 것과 같음)
-B진법 수 N을 10진수로 바꾸려면 B^k를 곱해가면서 더하면 된다.
ex) 3진법 수 102=1*3^2 + 0*3^1 + 2*3^0 = 11
'백준 1 > 수학' 카테고리의 다른 글
| [백준 1978] 소수 찾기 (0) | 2020.12.06 |
|---|---|
| [백준 11005] 진법 변환 2 (0) | 2020.12.06 |
| [백준 9613] GCD 합 (0) | 2020.12.05 |
| [백준 1934] 최소공배수 (0) | 2020.12.05 |
| [백준 2609] 최대공약수와 최소공배수 (0) | 2020.12.05 |