방정식 풀이
면접 대비시간 제한1초메모리 제한128 MB
괄호와 곱셈이 있는 재귀 문법으로 주어진 일차방정식을 해석해 해가 없음, 무수히 많음, 유일한 해(소수점 여섯 자리)를 판별해 출력한다.
문제
미지수가 하나인 일차 방정식들이 주어진다. 각 방정식의 해를 구하는 프로그램을 작성하시오.
입력
입력은 여러 개의 방정식으로 이루어진다. 각 방정식은 한 줄에 하나씩 주어진다.
모든 방정식의 길이는 100글자 이하이며, 다음 EBNF 문법을 따른다.
Equation := Expression '=' Expression
Expression := Term { ('+' | '-') Term }
Term := Factor { '*' Factor }
Factor := Number | 'x' | '(' Expression ')'
Number := Digit | Digit Number
Digit := '0' | '1' | ... | '9'
이 문법으로는 x*x = 25 처럼 일차식이 아닌 식도 만들 수 있지만, 입력으로는 항상 x 에 대한 일차식만 주어진다. 또한 방정식의 모든 부분식도 항상 일차식이므로, x*x - x*x + x = 0 (x*x 는 일차식이 아니다)과 같은 식은 주어지지 않는다.
입력에 등장하는 모든 숫자는 음이 아닌 정수이며, x 는 실수이다.
출력
각 테스트 케이스마다 먼저 Equation #i 를 출력한다. 여기서 i 는 테스트 케이스 번호(1부터 시작)이다. 그다음 줄에 아래 세 가지 중 하나를 출력한다.
- 해가 없으면
No solution.을 출력한다. - 해가 무수히 많으면
Infinitely many solutions.을 출력한다. - 해가 유일하면
x = solution형식으로 출력하며,solution은 소수점 여섯째 자리까지 출력한다.
각 테스트 케이스 사이에는 빈 줄을 하나 출력한다.