힉스 보손

시간 제한1초메모리 제한128 MB

요약
시간에 따라 극좌표의 반지름과 각도가 각각 일차식으로 변하는 두 입자가 처음으로 같은 위치에 도달하는 시각을 유리수로 구하거나, 충돌하지 않으면 0을 출력한다.
난이도

어려움10점 중 8점

유형
수학, 기하, 정수론, 구현
정답자
아직 제출이 없습니다

문제

첫 번째 힉스 보손이 검출된 지 100년이 지난 지금, 입자 물리학은 모든 고등학교의 주요 과목이 되었습니다. 아이들은 휴대용 입자 가속기만으로 아주 작은 블랙홀을 만들어 친구들에게 자랑할 수 있다는 사실을 무척 좋아하죠. 휴대용 가속기로도 원리상 행성 전체를 삼킬 만큼 큰 블랙홀을 만들 수 있지만, 이 장치들은 그런 파국적인 부작용이 불가능할 때에만 입자를 발사하도록 프로그래밍되어 있습니다.

당신의 손녀는 두 대의 작은 입자 가속기로 이루어진 휴대용 키트로 자신만의 블랙홀을 만들려고 합니다. 두 가속기는 각각 보손 크기의 입자 하나씩을 발사합니다. 두 입자는 동시에 발사되며, 서로 충돌하는 순간 블랙홀이 나타납니다. 하지만 손녀는 그 순간이 오기까지 얼마나 기다려야 할지 모릅니다. 다행히 각 가속기는 네 개의 정수 AA, BB, CC, DD를 화면에 표시하여 입자의 궤적을 예측해 줍니다. 이 값들을

r=At+Br = A t + B

θ=Ct+D\theta = C t + D

에 대입하면 극좌표로 나타낸 입자의 궤적을 얻을 수 있습니다. 반지름 rr은 거리 단위, 각도 θ\theta는 도(°) 단위이며, 시간 tt는 시간 단위로 항상 기약분수로 표현되는 유리수입니다.

극좌표에서 한 점은 무한히 많은 표현을 가집니다. 일반적으로 점 (r,θ)(r, \theta)는 임의의 정수 kk에 대해 (r, θ±k×360°)(r,\ \theta \pm k \times 360°) 또는 (−r, θ±(2k+1)×180°)(-r,\ \theta \pm (2k + 1) \times 180°)로도 나타낼 수 있습니다. 또한 원점(r=0r = 0)은 임의의 θ\theta에 대해 (0,θ)(0, \theta)로 나타낼 수 있습니다.

두 가속기가 알려 준 매개변수를 이용해, 손녀는 두 입자가 언젠가 충돌할지, 충돌한다면 처음 충돌하는 시각이 언제인지 알고 싶어 합니다. 첫 충돌 이후에는 궤적을 예측할 수 없으므로, 오직 가장 처음의 충돌만 고려합니다.

손녀는 매우 똑똑하고 입자 물리학에도 해박하지만 컴퓨터 프로그래밍은 할 줄 몰라서, 할아버지(또는 할머니)의 오래된 프로그래밍 대회 노트를 뒤지고 있습니다. 다행히 당신은 예전에 바로 이 프로그램을 작성한 적이 있습니다. 이제 다시 한번 작성해 볼 시간입니다.

입력

입력은 여러 개의 테스트 케이스로 이루어지며, 한 줄에 하나씩 주어집니다. 각 테스트 케이스는 공백 하나로 구분된 여덟 개의 정수로 이루어집니다.

A1 B1 C1 D1 A2 B2 C2 D2(−104≤A1,B1,C1,D1,A2,B2,C2,D2≤104)A_1\ B_1\ C_1\ D_1\ A_2\ B_2\ C_2\ D_2 \quad (-10^4 \le A_1, B_1, C_1, D_1, A_2, B_2, C_2, D_2 \le 10^4)

앞의 네 값 (A1,B1,C1,D1A_1, B_1, C_1, D_1)은 첫 번째 가속기가 표시한 매개변수이고, 뒤의 네 값 (A2,B2,C2,D2A_2, B_2, C_2, D_2)은 두 입자가 발사될 때 두 번째 가속기가 표시한 매개변수입니다.

입력의 끝은 여덟 개의 정수가 모두 00인 줄(A1=B1=C1=D1=A2=B2=C2=D2=0A_1 = B_1 = C_1 = D_1 = A_2 = B_2 = C_2 = D_2 = 0)로 표시되며, 이 줄은 테스트 케이스로 처리하지 않습니다. 이는 입자를 발사하면 행성을 삼킬 블랙홀이 생기는 경우 가속기가 표시하는 값입니다. 00 자체는 유효한 입력 값이므로, 오직 여덟 개가 모두 00인 줄만 입력의 끝을 의미한다는 점에 유의하세요.

출력

각 테스트 케이스마다 공백 하나로 구분된 두 개의 음이 아닌 정수 tat_a와 tbt_b를 한 줄에 출력합니다. 두 입자가 절대 충돌하지 않는다면 ta=tb=0t_a = t_b = 0을 출력합니다. 그렇지 않다면 ta/tbt_a / t_b는 가장 이른 충돌 시각을 기약분수로 나타낸 것이어야 하며, 시각이 정수이더라도 분모는 반드시 11로 출력해야 합니다.

예제1

  1. 예제 1

    입력
    1 1 180 0 2 0 180 360
    10 10 360 0 -24 18 180 72
    5 5 180 0 -12 9 10 40
    -9 5 5 180 2 5 5 180
    0 0 0 0 0 0 0 0
    
    예상 출력
    1 1
    0 0
    4 17
    0 1