ACM이라는 마케팅 회사는 고객과 협력사에게 작은 선물로 나눠 주는 다양한 기발한 홍보 물품을 만든다. 그중 하나가 로마 숫자로 계산하는 계산기이다.
로마 숫자는 대문자를 사용해 임의의 음이 아닌 정수를 나타낼 수 있다.
| 기호 | I | V | X | L | C | D | M |
|---|---|---|---|---|---|---|---|
| 값 | 1 | 5 | 10 | 50 | 100 | 500 | 1000 |
숫자는 여러 글자를 이어 붙여 만들며, 값이 큰 글자가 항상 값이 작은 글자보다 앞에 와야 한다. 예외는 "I", "X", "C" 세 글자뿐이다. 이 글자들은 더 큰 값의 글자 앞에 놓여 끝자리가 4 또는 9인 값을 만들 수 있다. 허용되는 조합은 다음이 전부이다.
| 조합 | IV | IX | XL | XC | CD | CM |
|---|---|---|---|---|---|---|
| 값 | 4 | 9 | 40 | 90 | 400 | 900 |
모든 로마 숫자는 천의 자리를 먼저, 그다음 백의 자리, 십의 자리, 마지막으로 일의 자리를 나타내야 한다. 따라서 499는 항상 "ID"가 아니라 "CDXCIX"로 써야 한다.
실용적이지는 않지만 이 선물은 매우 멋지다고 여겨진다. 이 계산기를 위한 소프트웨어를 작성하라.
입력은 여러 개의 명령으로 이루어지며, 각 명령은 한 줄에 하나씩 주어진다. 가능한 명령은 대입, "RESET", "QUIT"이다.
대입 명령은 계산기가 가진 열 개의 레지스터(0부터 9까지) 중 하나를 가리키는 한 자리 숫자로 시작한다. 레지스터 번호 뒤에는 등호("=")와 식이 이어진다. 식은 올바른 로마 숫자, 레지스터 이름(한 자리 숫자), 더하기("+")와 빼기("-") 기호로만 이루어진다. 모든 식은 올바르며 길이가 10000자를 넘지 않는다고 가정해도 된다.
"QUIT" 명령은 항상 입력의 마지막 명령이다.
각 명령마다 정확히 한 줄을 출력한다.