시간 제한 메모리 제한 제출 정답 맞은 사람 정답 비율
3 초 (언어별 추가 시간 없음) 256 MB 68 31 8 53.333%

문제

탄성 충돌은 운동 에너지가 보존되는 충돌이다. 일차원 상에서 질량이 m1, m2인 두 물체가 각각 속도(여기서 속도는 방향을 포함하는 양이다) u1, u2로 운동하다가 탄성 충돌하면 충돌 후 두 물체의 속도는 각각

$$ v_1 = \frac{m_1-m_2}{m_1+m_2}u_1 + \frac{2m_2}{m_1+m_2}u_2 $$

$$ v_2 = \frac{2m_1}{m_1+m_2}u_1 - \frac{m_1-m_2}{m_1+m_2}u_2 $$

이다. 예를 들어 질량 2m인 물체가 왼쪽에서 속도 v로 다가오고 질량 m인 물체가 오른쪽에서 속도 -v로 다가와 탄성 충돌하면 충돌 후 둘의 속도는 각각 -v/3과 5v/3이 된다. 여기서 속도의 부호는 왼쪽에서 오른쪽으로 운동하는 것을 (+)로 두었다. 한편 움직이지 않는 벽과 물체가 탄성 충돌하면 물체의 속력은 그대로이고 운동 방향만 반대가 된다. 즉, 속도의 부호만 달라진다.

이제 아래 그림과 같이 왼쪽이 벽으로 막힌 1차원 평면에서 운동하는 두 물체 AB를 생각하자. A의 질량은 1이고 처음에는 정지해 있다. B의 질량은 N2이고 처음에는 A의 오른쪽에서 다가온다. 이때 총 충돌 횟수(AB 사이 충돌과 벽과 A 사이 충돌을 모두 센다)는 몇 번일까? 모든 마찰은 무시하고 모든 충돌은 탄성 충돌이다.

입력

첫째 줄에 양의 정수 N이 입력된다. (1 ≤ N ≤ 500)

출력

총 충돌 횟수를 출력한다.

예제 입력 1

1

예제 출력 1

3

처음 AB가 충돌하면 B는 멈추고 A가 왼쪽으로 운동한다. 그 후 A가 벽에 부딪혀서 되돌아와 다시 둘이 충돌하면 A가 멈추고 B가 오른쪽으로 운동한다. 이 다음부턴 충돌이 일어나지 않으므로 총 충돌 횟수는 세 번이다.

예제 입력 2

7

예제 출력 2

22

예제 입력 3

113

예제 출력 3

355

힌트

Python의 fractions 모듈 사용을 적극 권장한다.

출처