탄성 충돌

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

요약
질량 1인 물체가 정지해 있고 질량 N^2인 물체가 오른쪽에서 다가올 때, 두 물체가 서로 및 벽과 탄성 충돌하며 운동하는 동안 발생하는 총 충돌 횟수를 구한다.
난이도

보통10점 중 7점

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

문제

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

v1=m1−m2m1+m2u1+2m2m1+m2u2v_1 = \frac{m_1-m_2}{m_1+m_2}u_1 + \frac{2m_2}{m_1+m_2}u_2

v2=2m1m1+m2u1−m1−m2m1+m2u2v_2 = \frac{2m_1}{m_1+m_2}u_1 - \frac{m_1-m_2}{m_1+m_2}u_2

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

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

입력

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

출력

총 충돌 횟수를 출력한다.

힌트

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

예제3

  1. 예제 1

    입력
    1
    예상 출력
    3
  2. 예제 2

    입력
    7
    예상 출력
    22
  3. 예제 3

    입력
    113
    예상 출력
    355