점과 직선을 @로 결합한 수식을 해석해 기하 연산을 수행하고, 결과 점의 좌표를 소수점 8자리까지 반올림해 출력한다.
보통6구현수학기하아직 제출이 없습니다시간 제한8초메모리 제한512 MB어느 날 이상한 글자가 적힌 낡은 두루마리를 발견했다.
그 글자는 보물의 위치를 나타내는 식이었다. 식은 다음 세 가지 연산으로 이루어진다.
식의 문법은 다음 BNF로 나타낸다.
<expression> ::= <point>
<point> ::= <point-factor> | <line> "@" <line-factor> | <line> "@" <point-factor> | <point> "@" <line-factor>
<point-factor> ::= "(" <number> "," <number> ")" | "(" <point> ")"
<line> ::= <line-factor> | <point> "@" <point-factor>
<line-factor> ::= "(" <line> ")"
<number> ::= <zero-digit> | <positive-number> | <negative-number>
<positive-number> ::= <nonzero-digit> | <positive-number> <digit>
<negative-number> ::= "-" <positive-number>
<digit> ::= <zero-digit> | <nonzero-digit>
<zero-digit> ::= "0"
<nonzero-digit> ::= "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9"
<point>와 <point-factor>는 점을 나타내고, <line>과 <line-factor>는 직선을 나타낸다. (X,Y) 꼴의 <point-factor>는 평면에서 x좌표가 X이고 y좌표가 Y인 점이다. @는 두 피연산자에 연산을 적용한다. 세 연산은 피연산자가 점인지 직선인지로 서로 구별되므로, 모두 같은 문자 @로 쓴다. 문법에서 알 수 있듯이 @는 왼쪽 결합이다.
보물이 있는 위치를 구하시오.
입력은 여러 개의 데이터 집합으로 이루어진다. 각 데이터 집합은 보물의 위치를 나타내는 식 하나가 적힌 한 줄이다.
각 데이터 집합은 다음 조건을 만족한다.
@의 두 피연산자가 모두 점이면, 두 점 사이의 거리는 1보다 크다.@의 두 피연산자가 모두 직선이면, 두 직선은 평행하지 않다.데이터 집합은 100개 이하이다. 입력의 마지막 줄에는 # 하나만 있으며, 이 줄은 데이터 집합이 아니다.
각 데이터 집합마다 식이 나타내는 점의 x좌표와 y좌표를 이 순서대로 공백 하나로 구분해 한 줄에 출력한다.
각 좌표는 소수점 아래 여덟째 자리까지 반올림해 출력한다. 좌표가 0이면 -0.00000000이 아니라 0.00000000으로 출력한다.