# 858. Mirror Reflection

## 题目

——镜面反射

There is a special square room with mirrors on each of the four walls. Except for the southwest corner, there are receptors on each of the remaining corners, numbered `0``1`, and `2`.

The square room has walls of length `p` and a laser ray from the southwest corner first meets the east wall at a distance `q` from the `0th` receptor.

Given the two integers `p` and `q`, return the number of the receptor that the ray meets first.

The test cases are guaranteed so that the ray will meet a receptor eventually.

Example 1:

```Input: p = 2, q = 1
Output: 2
Explanation: The ray meets receptor 2 the first time it gets reflected back to the left wall.
```

Example 2:

```Input: p = 3, q = 1
Output: 1
```

Constraints:

• `1 <= q <= p <= 1000`

## 思路

1.反射相当于房间镜像&光线直接延长。

2.m = p / gcd(p, q), n = m * q // p

## 代码

``````class Solution(object):
def mirrorReflection(self, p, q):

def gcd(a, b):
if a < b:
return gcd(b, a)
if b == 0:
return a
return gcd(b, a % b)

m = p // gcd(p, q)
n = m * q // p

if n % 2 == 0:
return 0
else:
return 1 if m % 2 == 1 else 2

``````

AC，收工！

——此处是内容的分割线——