잠수함 레이저의 굴절
시간 제한1초메모리 제한256 MB
잠수함 깊이, 전투기 높이, 수평 거리와 굴절률을 입력받아 굴절 후 전투기에 닿는 레이저 발사각을 구합니다.
문제

잠수함이 통신용 레이저로 상공을 지나는 제트기에 신호를 보낸다. 바다 표면은 평평하다. 잠수함은 표면에서 깊이 아래를 지나고, 제트기는 표면에서 높이 인 곳에 있으며 잠수함에서 수평 거리 만큼 떨어져 있다. 잠수함은 통신을 시작하기 전에 제트기 쪽으로 방향을 돌렸으므로, 이제 레이저를 겨눌 고도각 만 정하면 된다.
레이저가 바닷물에서 공기로 빠져나갈 때는 굴절이 일어나 진행 경로가 꺾인다. 굴절은 스넬의 법칙을 따른다. 수평인 경계면에 수직선 기준 각 로 도달한 빛은 각 로 빠져나가고, 두 각은 다음 식을 만족한다.

은 물속에서, 는 공기 중에서 각각 수직선을 기준으로 잰 각이고, 과 는 각각 물과 공기의 굴절률이다. 어떤 물질의 굴절률은 그 물질 안에서 빛이 나아가는 속도에 반비례한다.
고도각 는 잠수함이 있는 자리에서 수평선을 기준으로 잰다.
입력
입력은 데이터 세트 하나 이상으로 이루어진다.
각 데이터 세트는 실수 다섯 개가 차례대로 적힌 한 줄이다.
- , 잠수함의 깊이(정확히는 레이저 발사구의 깊이), 단위는 피트,
- , 제트기의 높이, 단위는 피트,
- , 잠수함에서 제트기까지의 수평 거리, 단위는 피트,
- , 물의 굴절률,
- , 공기의 굴절률,
가 0인 줄이 나오면 입력이 끝난다. 이 줄은 다섯 수가 모두 0이고 데이터 세트가 아니다.
출력
각 데이터 세트마다 잠수함이 제트기를 비추려면 레이저를 겨눠야 하는 고도각을 도 단위로 한 줄에 출력한다. 각도는 100분의 1도 단위로 반올림하고, 소수점 아래 두 자리를 정확히 출력한다.