시간 제한 메모리 제한 제출 정답 맞은 사람 정답 비율
1 초 128 MB 49 12 10 28.571%

문제

상근기업(SK)은 최신 기술을 모두 이용해서 새로운 계산기 SK CXX를 만들었다. 이 계산기는 I부터 MMMMCMXCIX까지 정수에 대해서 사칙연산을 지원한다.

이 문제는 SK CXX를 시뮬레이팅 하는 문제이다. 입력의 각 줄은 양의 정수(I(1) ~ MMMMCMXCIX(4999))의 로마 숫자 표기법 또는 사칙 연산자 (+ - * /)이다. 숫자는 스택의 가장 위에 push되고, 연산자는 스택의 가장 위의 2값을 계산한다. 그리고, = 연산자는 스택의 가장 위에 있는 값을 로마 숫자로 출력한다.

- 연산의 경우에는, 첫번째 숫자를 두번째 숫자에서 빼는 것이고, / 연산은 두번째 숫자를 첫번째 숫자로 나누는 것이다. 만약 0으로 나눌 경우에는 "division by zero exception"을 출력한 뒤, 피제수(0이 아닌 값)를 스택에 저장한고, 제수(0)는 저장하지 않는다.

만약, +, -, *, /, =연산을 수행해야 하는데, 스택에 충분한 숫자가 없을 때는 "stack underflow"를 출력한 뒤, 연산을 수행하지 않는다. 또, 출력해야 하는 숫자가 0보다 작거나 같거나, MMMMCMXCIX(4999)보다 크다면, "out of range exception"을 출력한 뒤, 다음 입력을 수행한다.

로마 숫자 표기법은 2608번에 잘 설명되어 있다.

입력

입력은 여러 줄로 이루어져 있고, 다음 2가지 중 하나이다.

- 로마 숫자 표현 I부터 MMMMCMXCIX까지

- 산술 연산 +, -, /, * 또는, 출력 연산 =

입력은 파일의 끝에서 끝난다.

출력

입력으로 = 연산이 주어질 때 마다 스택의 가장 위에 있는 값을 출력한다. 또는, 에러가 발생했을 경우 에러를 출력한다.

예제 입력

I
I
+
=
II
*
=
VIII
-
=

예제 출력

II
IV
out of range exception

힌트