import java.util.Scanner;
public class BaseChange_2745 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int answer = 0;
String N = scan.next();
int B = scan.nextInt();
for(int i = 0; i < N.length(); i++) {
if(N.charAt(i) >= '0' && N.charAt(i) <= '9')
answer += (N.charAt(i)-'0') * Math.pow(B, (N.length()-i-1));
else
answer += (N.charAt(i)-'A' + 10) * Math.pow(B, (N.length()-i-1));
}
System.out.println(answer);
}
}
10진 | 문자 |
---|---|
48 | 0 |
65 | A |
97 | a |
☑️0 ~ 9 진법인 경우
문자가 N.charAt(i) >= '0' && N.charAt(i) <= '9'인 경우이다.
그렇기 때문에 0의 아스키코드 48을 빼주거나 '0' 문자 그대로 빼주면 된다
(N.charAt(i)-'0' or N.charAt(i)- 48)
☑️10진법을 넘어가는 진법인 경우
A: 10, B: 11, ..., F: 15, ..., Y: 34, Z: 35
이런 경우에는 다음과 같이 알파벳 대문자를 사용하므로 대문자 A의 아스키코드를 빼주거나 'A' 문자 그대로 빼주면 된다!
(N.charAt(i)-'A' + 10 or N.charAt(i)-65 +10) 10부터 A이므로 10을 더해줌
Math.pow(7, 2); // 49
Math.pow(7, 3); // 343
Math.pow(2, 10); // 1024