# 858. Mirror Reflection

#### Medium

***

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.

&#x20;

**Example 1:**

![](https://s3-lc-upload.s3.amazonaws.com/uploads/2018/06/18/reflection.png)

```
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
```

&#x20;

**Constraints:**

* `1 <= q <= p <= 1000`

Youtube : <https://www.youtube.com/watch?v=_xIBOUWEq1c&ab_channel=AlgorithmsMadeEasy>

```python
class Solution:
    def mirrorReflection(self, p: int, q: int) -> int:
        m, n = 1,1
        while m*p != n*q:
            n += 1
            m = n*q // p
        if n % 2 == 1 and m % 2 == 0:
            return 0
        if n % 2 == 1 and m % 2 == 1:
            return 1
        if n % 2 == 0 and m % 2 == 1:
            return 2
        return -1
```
