Informatica Online Judge

  거울과 레이저 #1 [1625 / 0659]

Time Limit(Test case) : 1000(ms)
Number of users who solved : 70   Total Tried : 207


The Champion of this Problem (C++) : gs19023 - ms / 160byte
My Best Submission (C++) : N/A

[AtCoder]

Background

경곽이는 한 변의 길이가 n인 3장의 거울을 이용하여 각 꼭짓점을 a, b, c로 하는 정삼각형으로 배치했다.

경곽이는 변 ab위의 한 점을 잡고(이 점은 꼭짓점 a로부터 X만큼 떨어져있다.), 변 bc와 평행을 이루도록 레이저를 발사했다.

이 레이저는 직진하여 거울에 반사되어 다음 그림과 같은 경로로 이동한다. 이 예는 n = 5, X = 2일 때의 예이다.



n과 X값에 관계없이 조건에 맞도록 발사된 레이저는 항상 처음 위치로 되돌아 오는 것이 수학적으로 보장된다.

n과 X의 값이 주어질 때, 레이저이 지나간 자취의 길이를 구하는 프로그램을 작성하시오.

(단, 처음 출발한 위치에서 다시 돌아올 때까지의 길이를 구한다.)

Input

첫 번째 줄에 n과 X가 공백으로 구분되어 입력된다.

[입력값의 정의역]
2 <= n <= 1,000

모든 값은 정수이다.

Output

레이저의 길이를 출력한다.

IO Example

입력
5 2

출력
12

* 설명 : 2+3+2+2+1+1+1=12 이므로 12이다.

Submit : [C/C++] | [C++11] | [Obj-C] | [Java] | [Python]
Prob Analysis : [Problem Statistics] | [Solution]