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

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

Spirograph

시간 제한8초메모리 제한512 MB

요약
반지름 P인 고정원 안에서 반지름 Q인 원이 미끄러지지 않고 굴러갈 때, 중심에서 거리 R만큼 떨어진 구멍이 그리는 하이포트로코이드 곡선의 길이를 각 테스트 케이스마다 계산한다.
난이도

어려움10점 중 8점

유형
수학, 기하, 시뮬레이션
정답자
아직 제출이 없습니다

문제

아래 그림과 같은 도구를 본 적이 있을 것이다.

그림 1: Spirograph

고정된 원(A)과, 작은 구멍이 여러 개 뚫린 더 작은 내부 원(B)이 있다. 구멍 하나에 펜 끝을 꽂고 원 B를 원 A의 안쪽을 따라 미끄러지지 않게 굴리면 아래 그림과 같은 곡선을 그릴 수 있다. 이런 곡선을 하이포트로코이드(hypotrochoid)라고 한다.

그림 2: 하이포트로코이드의 예

고정된 원 A의 반지름, 내부 원 B의 반지름, 그리고 B의 중심과 사용한 구멍 사이의 거리가 주어질 때 하이포트로코이드의 길이를 계산하는 프로그램을 작성하라.

입력

입력은 여러 테스트 케이스로 이루어진다. 각 테스트 케이스는 한 줄에 세 정수 P, Q, R이 이 순서대로 주어지며, P는 고정된 원 A의 반지름, Q는 내부 원 B의 반지름, R은 원 B의 중심과 구멍 사이의 거리이다. 0 ≤ R < Q < P ≤ 1000이라고 가정할 수 있다. P, Q, R은 공백 하나로 구분되고, 그 외의 공백은 입력에 나타나지 않는다.

입력의 끝은 P = Q = R = 0인 줄로 표시된다.

출력

각 테스트 케이스마다 하이포트로코이드 곡선의 길이를 출력한다. 오차는 10-2(= 0.01) 이내여야 한다.

예제1

  1. 예제 1

    입력
    3 2 1
    3 2 0
    0 0 0
    
    예상 출력
    13.36
    6.28