아마겟돈
시간 제한1초메모리 제한128 MB
현재 거리와 분리 각도, 두 속도가 주어졌을 때 미사일을 발사할 수 있는 마지막 시점까지 남은 시간을 계산한다.
문제
소행성 하나가 지구를 향해 곧장 날아오고 있다. 소행성의 일부만 보일 뿐 나머지는 태양에 가려져 있어 크기와 속도를 알 수 없으므로, 최악의 상황을 가정해 대비해야 한다.
다행히 우리에게는 미사일이 있다. 미사일이 소행성에 명중하면 소행성은 두 조각으로 갈라지고, 두 조각은 좌우 대칭으로 벌어지며 전체 각도 도로 서로 멀어진다. 따라서 각 조각은 소행성의 원래 진행 방향에서 도만큼 꺾인 뒤 직선으로 날아간다.
지구는 원점을 중심으로 하고 반지름이 km인 원이다. 소행성은 원점을 향해 일직선으로 다가온다. 우리는 소행성과 가장 가까운 지표면 지점(원점에서 거리 )에서 소행성의 진행 경로를 따라 미사일을 발사하며, 미사일은 일정한 속도로, 소행성도 명중 순간까지 일정한 속도로 움직인다.
미사일이 원점에서 거리 인 지점에서 소행성을 맞히면, 두 조각이 지구를 벗어나 지나가는 조건은 정확히 이다. 늦게 쏠수록 가 작아져 조각이 덜 벌어지므로, 발사할 수 있는 마지막 순간이 존재한다. 소행성의 현재 거리, 벌어지는 각도, 그리고 두 속도가 주어질 때, 발사가 너무 늦어지기까지 몇 초가 남았는지 구하라.
입력
첫째 줄에 테스트 케이스의 수 가 주어진다. 이어지는 개의 줄에는 각 상황을 나타내는 네 개의 수가 주어진다.
- — 지구 중심으로부터 소행성까지의 거리(km, )
- — 두 조각이 벌어지는 각도(도, )
- — 소행성의 일정한 속도(km/s, )
- — 미사일의 일정한 속도(km/s, )
출력
각 상황마다 먼저 Data Set x:를 한 줄에 출력한다. 여기서 는 부터 시작하는 상황 번호이다. 다음 줄에는 발사가 너무 늦어지기까지 남은 시간(초)을 소수점 아래 둘째 자리까지 반올림하여 출력한다. 남은 시간이 초 미만이면 대신 Oh no!를 출력한다. 연속한 두 상황 사이는 빈 줄 하나로 구분한다.