Skip to the content.

leetcode [858] 镜面反射


Contact me:

Blog -> https://cugtyt.github.io/blog/index
Email -> cugtyt@qq.com
GitHub -> Cugtyt@GitHub


有一个特殊的正方形房间,每面墙上都有一面镜子。除西南角以外,每个角落都放有一个接受器,编号为 0, 1,以及 2。

正方形房间的墙壁长度为 p,一束激光从西南角射出,首先会与东墙相遇,入射点到接收器 0 的距离为 q 。

返回光线最先遇到的接收器的编号(保证光线最终会遇到一个接收器)。

示例:

输入: p = 2, q = 1
输出: 2
解释: 这条光线在第一次被反射回左边的墙时就遇到了接收器 2 。

提示:

1 <= p <= 1000
0 <= q <= p
class Solution:
    def mirrorReflection(self, p: int, q: int) -> int:
        x, y = p, q
        while True:
            if y % p == 0:
                if (y // p) % 2 != 0 and x == p:
                    return 1
                if (y // p) % 2 != 0 and x == 0:
                    return 2
                if (y // p) % 2 == 0 and x == p:
                    return 0
            x, y = abs(x - p), y + q