동물원 운영진은 어린이 관람객을 늘릴 방법을 오랫동안 찾았다. 답은 입구를 지나자마자 보이는 커다란 화면이었다. 운영진은 그 화면에 짧은 퀴즈를 띄우기 시작했고, 모여 있는 아이 가운데 답을 가장 먼저 외친 아이에게 그날 하루 무료 입장을 준다. 화면은 금세 인기를 얻었고 지금은 여러 종류의 퀴즈가 올라온다. 그중 하나가 정수 사칙연산을 묻는 수학 퀴즈다.
운영진은 아이의 형이나 누나, 친구가 화면을 공략하는 방법을 알아낼까 걱정한다. 휴대폰으로 화면을 찍고, 이미지 인식 프로그램으로 사진에서 수식을 뽑아내 계산한 다음, 그 답을 휴대폰 주인에게 알려주면 주인이 곧바로 답을 외치는 방식이다.
이런 프로그램을 만들기가 얼마나 어려운지 가늠해 보자. 우선 장난감 수준의 첫 단계로, 이미 아스키 아트로 정리된 수식을 읽어 그 값을 계산하는 프로그램을 작성한다.
입력은 여러 개의 테스트 케이스로 이루어진다. 각 테스트 케이스의 첫 줄에 두 정수 R, C가 주어진다 (1≤R≤3, 1≤C≤1000). 이어지는 R개의 줄에는 각각 문자가 C개 있다. R×C 문자 행렬 전체가 다음 규칙으로 만들어진 하나의 산술 수식을 아스키 아트로 그린 것이다.
FORMULA -> COMPLEX | FORMULA + COMPLEX | FORMULA - COMPLEX
COMPLEX -> SQRT | FRACTION | TERM
______
SQRT -> \/SIMPLE
SIMPLE
FRACTION -> ======
SIMPLE
SIMPLE -> TERM | SIMPLE + TERM | SIMPLE - TERM
TERM -> INTEGER | INTEGER * TERM
INTEGER -> 0 | 1 | 2 | 3 | ... | 999999 | 1000000
수식의 배치에는 다음 규칙이 더 붙는다.
SQRT의 가로줄은 밑줄 문자(_, 아스키 코드 95) 하나 이상으로 이루어지고, 항상 화면에 그려진 수식의 맨 윗줄에 놓인다.SQRT의 가로줄만 놓인다.FRACTION이나 SQRT에도 속하지 않는 모든 TERM과 모든 연산 기호가 수식의 둘째 줄에 놓인다.SQRT 가로줄의 길이는 그 아래에 있는 SIMPLE의 길이와 같다.FRACTION의 분수선은 등호 하나 이상으로 이루어지고, 그 길이는 분수선 위 SIMPLE의 길이와 아래 SIMPLE의 길이 중 큰 쪽이다. 둘 중 짧은 쪽은 공백을 채워 분수선 너비에 맞춘다.+, -, *) 앞뒤에는 공백이 정확히 하나씩 있다.수식은 표준 산술 규칙으로 계산한다. 각 FORMULA와 각 TERM은 왼쪽에서 오른쪽으로 계산한다. 각 SIMPLE도 왼쪽에서 오른쪽으로 계산하되, 곱셈이 덧셈과 뺄셈보다 먼저라는 표준 규칙을 따른다. SQRT와 FRACTION도 표준 방식으로 계산한다. 계산된 FORMULA, COMPLEX, SQRT, FRACTION, SIMPLE, TERM의 값은 모두 절댓값이 1000000 이하인 정수다. 따라서 근호 안의 수는 항상 완전제곱수이고, 분수는 항상 나누어떨어진다.
각 테스트 케이스 뒤에는 빈 줄이 하나 있다. 입력은 0이 두 개 적힌 줄로 끝난다.
각 테스트 케이스마다 입력 수식의 값 V를 한 줄에 출력한다.