문제 분류 수업 진도 대회 채점현황 순위 질문게시판
게임
스도쿠 타이핑 리듬 타자게임 타이핑 테트리스 타이핑 인베이더 타이핑 지뢰찾기 8192 공룡게임 타이핑 플래피버드 랭킹
로그인

5035 : 시계 바늘

•시간제한: 2.000 S •메모리제한: 256 MB •제출: 1 •통과: 1 •만든사람: suakii

5035 : 시계 바늘

시간 2.000s · 메모리 256MB · 제출 1 · 정답 1

문제 설명

시계의 중심을 원점 $(0, 0)$이라 할 때, 12시 방향을 $y$축 양의 방향($0^\circ$), 시계 방향으로 각도가 증가한다고 가정합니다.
길이가 $A$인 시침과 길이가 $B$인 분침이 있을 때, 시각 $H$시 $M$분에서 두 바늘의 끝점 사이의 직선 거리를 구하는 프로그램을 작성하십시오.

[시계 바늘의 각도 계산 원리]
• 각도의 기준($0^\circ$): 12시 방향(수직 위쪽)이 $0^\circ$이며, 시계 방향으로 돌면서 각도가 커집니다.
 $\implies 12\text{시}(0^\circ) \to 3\text{시}(90^\circ) \to 6\text{시}(180^\circ) \to 9\text{시}(270^\circ) \to 12\text{시}(360^\circ)$
• 분침의 각도: 1시간(60분)에 한 바퀴($360^\circ$)를 돌므로, 1분당 $360^\circ \div 60 = 6^\circ$씩 회전합니다.
 $\implies \text{분침 각도} = 6^\circ \times M$
• 시침의 각도: 12시간(720분)에 한 바퀴($360^\circ$)를 돌므로, 1분당 $360^\circ \div 720 = 0.5^\circ$씩 회전합니다.
 따라서 $H$시 $M$분을 총 경과 분 단위인 $(60 \times H + M)$분으로 환산한 뒤 $0.5^\circ$를 곱하여 바로 구할 수 있습니다.
 $\implies \text{시침 각도} = (60 \times H + M) \times 0.5^\circ$

[두 바늘 사이의 사잇각($\theta$) 구하기: 왜 180°가 넘으면 360°에서 뺄까요?]
원(시계) 전체는 한 바퀴가 $360^\circ$입니다. 시계 위에 두 바늘이 놓이면 원은 항상 '가까운 쪽 각(작은 조각)'과 '등 뒤로 빙 둘러가는 먼 쪽 각(큰 조각)'의 2개로 나뉘며, 두 각의 합은 항상 $360^\circ$가 됩니다.
• 반 바퀴($180^\circ$) 이하일 때: 이미 가까운 쪽을 잰 것이므로 두 각도의 차이 그대로가 사잇각입니다.
• 반 바퀴($180^\circ$)를 넘을 때: 등 뒤로 크게 돌아간 먼 쪽 각도를 잰 것입니다. 따라서 두 바늘 사이의 최단 사잇각은 전체 $360^\circ$에서 큰 각도를 뺀 $360^\circ - \text{차이}$가 됩니다.
 ※ 예를 들어 9시 정각의 경우:
  12시($0^\circ$)에서 시계 방향으로 9시($270^\circ$)까지 빙 둘러가면 차이가 $270^\circ$가 됩니다.
  하지만 두 바늘 사이의 지름길(최단 사잇각)은 반대편이므로, $360^\circ - 270^\circ = 90^\circ$(직각)가 됩니다!

[그림으로 이해하는 시계 바늘의 위치와 각도] 예제 1 : 9시 00분 (A=3, B=4) 12 (0°) 3 (90°) 6 (180°) 9 (270°) B=4 (0°) A=3 (270°) 90° d 시침: 12시 기준 시계방향 270° (540분 × 0.5°) 분침: 12시 방향 0° | 둘러간 큰 각: 270° 최단 사잇각 = 360° - 270° = 90° (직각) 예제 2 : 10시 40분 (A=3, B=4) 12 (0°) 3 (90°) 6 (180°) 9 (270°) B=4 (240°) A=3 (320°) 80° d 시침: (60 × 10 + 40) × 0.5° = 320° 분침: 6° × 40 = 240° 최단 사잇각 = 320° - 240° = 80° (180° 이하)
[제약 조건]
• 입력되는 모든 값은 정수입니다.
• $1 \le A, B \le 1000$
• $0 \le H \le 11$
• $0 \le M \le 59$

입력 설명

정수 $A, B, H, M$ 이 주어집니다.

출력 설명

시침과 분침 끝점 사이의 거리를 출력하십시오.
정답과의 절대 오차 또는 상대 오차가 $10^{-9}$ 이하라면 정답으로 인정합니다.
(출력값을 $X$, 실제 정답을 $Y$라 할 때, $|X - Y| \le 10^{-9}$ 또는 $\frac{|X - Y|}{|Y|} \le 10^{-9}$ 이면 정답 처리됩니다.)

입력 예시
COPY
복사되었습니다!

3 4 9 0

출력 예시
COPY
복사되었습니다!

5.000000000000

출처/분류

NOTICE  —  BFStudy OJ 정보샘
애들아, 문제 많이 풀고 게임 잠깐 하는거지?
— 정보샘