아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

잠수함 레이저의 굴절

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

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

보통10점 중 5점

유형
이분 탐색, 수학
정답자
아직 제출이 없습니다

문제

잠수함이 통신용 레이저로 상공을 지나는 제트기에 신호를 보낸다. 바다 표면은 평평하다. 잠수함은 표면에서 깊이 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_1 과 n2n_2 는 각각 물과 공기의 굴절률이다. 어떤 물질의 굴절률은 그 물질 안에서 빛이 나아가는 속도에 반비례한다.

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

입력

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

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

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

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

출력

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

예제2

  1. 예제 1

    입력
    600 600 1000 1.333 1.01
    600 1200 4000 1.5 1.01
    400 100 10000 2.5 1.01
    0 0 0 0 0
    
    예상 출력
    44.37
    11.51
    2.30
    
  2. 예제 2

    입력
    1 100 0 1.5 1.0
    800 10000 0 2.5 1.0
    123.5 456.75 0 1.333 1.0003
    0 0 0 0 0
    
    예상 출력
    90.00
    90.00
    90.00