잠수함 레이저의 굴절

잠수함 깊이, 전투기 높이, 수평 거리와 굴절률을 입력받아 굴절 후 전투기에 닿는 레이저 발사각을 구합니다.

보통5이분 탐색수학아직 제출이 없습니다시간 제한1초메모리 제한256 MB

문제

잠수함이 통신용 레이저로 상공을 지나는 제트기에 신호를 보낸다. 바다 표면은 평평하다. 잠수함은 표면에서 깊이 dd 아래를 지나고, 제트기는 표면에서 높이 hh 인 곳에 있으며 잠수함에서 수평 거리 xx 만큼 떨어져 있다. 잠수함은 통신을 시작하기 전에 제트기 쪽으로 방향을 돌렸으므로, 이제 레이저를 겨눌 고도각 ϕ\phi 만 정하면 된다.

레이저가 바닷물에서 공기로 빠져나갈 때는 굴절이 일어나 진행 경로가 꺾인다. 굴절은 스넬의 법칙을 따른다. 수평인 경계면에 수직선 기준 각 θ1\theta_1 로 도달한 빛은 각 θ2\theta_2 로 빠져나가고, 두 각은 다음 식을 만족한다.

sinθ1sinθ2=n1n2\frac{\sin \theta_1}{\sin \theta_2} = \frac{n_1}{n_2}

θ1\theta_1 은 물속에서, θ2\theta_2 는 공기 중에서 각각 수직선을 기준으로 잰 각이고, n1n_1n2n_2 는 각각 물과 공기의 굴절률이다. 어떤 물질의 굴절률은 그 물질 안에서 빛이 나아가는 속도에 반비례한다.

고도각 ϕ\phi 는 잠수함이 있는 자리에서 수평선을 기준으로 잰다.

입력

입력은 데이터 세트 하나 이상으로 이루어진다.

각 데이터 세트는 실수 다섯 개가 차례대로 적힌 한 줄이다.

  • dd, 잠수함의 깊이(정확히는 레이저 발사구의 깊이), 단위는 피트, 1d8001 \leq d \leq 800
  • hh, 제트기의 높이, 단위는 피트, 100h10000100 \leq h \leq 10\,000
  • xx, 잠수함에서 제트기까지의 수평 거리, 단위는 피트, 0x100000 \leq x \leq 10\,000
  • n1n_1, 물의 굴절률, 1.0<n12.51.0 < n_1 \leq 2.5
  • n2n_2, 공기의 굴절률, 1.0n2<n11.0 \leq n_2 < n_1

dd 가 0인 줄이 나오면 입력이 끝난다. 이 줄은 다섯 수가 모두 0이고 데이터 세트가 아니다.

출력

각 데이터 세트마다 잠수함이 제트기를 비추려면 레이저를 겨눠야 하는 고도각을 도 단위로 한 줄에 출력한다. 각도는 100분의 1도 단위로 반올림하고, 소수점 아래 두 자리를 정확히 출력한다.