import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String s = br.readLine();
int len = s.length();
int bin = 0;
if(s.equals("0") && len == 1) System.out.println(0);
else {
for(int i = 0; i < len; i++){
bin += (change(s.charAt(i)) * Math.pow(16, len-i-1));
}
}
System.out.println(bin);
br.close();
}
public static int change(char a){
int result;
switch(a){
case 'A': result=10; break;
case 'B': result=11; break;
case 'C': result=12; break;
case 'D': result=13; break;
case 'E': result=14; break;
case 'F': result=15; break;
default: result = a-'0';
}
return result;
}
}
16진수를 10진수로 변환하는 문제인데,
10진수 123이 1(10^2) + 2(10^1) + 3*(10^0)인 것처럼
16진수도 똑같이 16을 단위로 연산해 주면 된다.
A~F는 각 10~15랑 매칭되므로 그건 case로 나눠 줬고, 나머지 0~9는 char를 int로 변환해 줬다. 그렇게 문자열 s를 앞에서부터 한 자리씩 change 메소드로 변환하고 for문에서 bin에 계산값을 더해나갔다.