题目大意
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.
Return the number of the receptor that the ray meets first. (It is guaranteed 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.
题目解析
下面图示分别展示 p:q = 3:1,4:1, 3:2 的情况,对square room进行相应扩展。
由此,根据p和q的关系,进行总结:
p为奇数,q为奇数时,到达接收器1。
p为奇数,q为偶数时,到达接收器0。
p为偶数,q为奇数时,到达接收器2。
代码
class Solution:
def mirrorReflection(self, p: int, q: int) -> int:
while p%2==0 and q%2==0:
p /= 2
q /= 2
if p%2 == 0 and q%2 == 1:
return 2
if p%2 == 1 and q%2 == 0:
return 0
return 1
参考: https://www.cnblogs.com/grandyang/p/10646040.html