시간 제한메모리 제한제출정답맞힌 사람정답 비율
1 초 256 MB55722419445.116%

문제

HCPC에 참가하기 위해 준비하고 있던 제범이는 16진수를 열심히 공부하고 있다. 너무 열심히 16진수를 공부하던 제범이는 모든 수를 16진수로 적기 시작했고, 급기야는 이런 암호를 떠올리는 지경에 이르렀다.

“임의의 개수의 16진수들을 공백없이 적고, 이 수가 순서대로 어떤 형식인지만 알려주면, 다시 원래의 10진수로 모두 돌려놓을 수 있지 않을까?”

여기서 형식이란 char, int, long_long등을 의미하고, 각각 1바이트, 4바이트, 8바이트이다. 또한, 1바이트는 8비트이기 때문에, 1바이트를 16진수로 표현하려면 2자리가 필요하다. 16진수의 한자리는 이진수 4자리로 표현할 수 있기 때문이다.

이 암호의 이름을 ‘제범식 암호’로 부르기로 한 제범이는 몇 명에게 이 암호를 주고, 암호를 풀어오는 사람이 누구인지 보기로 했다. 그리고 당신은 그 중 하나가 되었다. 제범이의 암호를 풀어보자!

입력

첫 번째 줄에는 제범이의 암호가 16진수의 형식으로 주어진다. 암호는 0~9, a~f로 이루어져 있고, a~f는 10~15를 의미한다. 암호의 길이는 2 이상 106 이하이다.

두번째 줄에는 암호를 구성하는 값의 개수 N이 주어진다. (1 ≤ N ≤ 500,000)

세번째 줄에는 암호를 구성하는 값의 형식 N개가 공백을 사이에 두고 주어진다. 형식은 각각 "char", "int", "long_long" 중 하나이다.

출력

제범이의 암호를 이루는 값을 10진수로 바꾸어서 출력하라. 16진수를 10진수로 바꿨을 때 음수가 아닌 입력만 주어진다.

예제 입력 1

010000001f
2
char int

예제 출력 1

1 31

앞에서 언급했듯이 char는 1바이트, int는 4바이트이고 16진수로 각각 2자리, 8자리로 표현된다. 따라서 위의 암호는 01과 0000001F로 나뉘게 된다. 이 두 수를 10진수로 바꾸게 되면 1과 31이 된다.

예제 입력 2

0000020a7f0000000007000a00
3
int char long_long

예제 출력 2

522 127 117443072

long_long은 8바이트이기에 16자리로 표현된다. 따라서 위의 암호는 0000020a, 7f, 0000000007000a00로 나뉘게 된다. 이 3개의 16진수를 10진수로 바꾸면, 각각 522 127 117443072가 된다.

출처

University > 한양대학교 > 제6회 한양대학교 프로그래밍 경시대회 > Beginner Division C번