///    光线在墙壁间不停地反射,看起来是一个非常复杂的现象,同时题意
///要求我们确定光线最终会碰到哪个墙角。但是当光线射到墙上时,墙的长度p
///和初始光线射到的距离q之间必然满足,px = qy,x和y都是整数。那么我们
///需要找一个最小的x,使得上式成立,这时我们根据x的奇偶性可以知道光线的
///停止在上或下边,根据光线弹射次数的奇偶性可以知道它最终停在左边还是右边
///从而问题得解。
///    也可以自己画出延伸的虚拟的墙体,使得光线继续向上下两端传播,从而得到对于
///下面代码更好的理解。
class Solution {
public:
    int mirrorReflection(int p, int q) {
        for(int i = 0, s = p;i < q;++i ){
            if(s%q == 0){
                if(i%2 == 0){
                    return 2-(s/q)%2;
                }else{
                    return 0;
                }
            }
            s += p;
        }
        return -1;
    }
};
posted on 2022-08-05 00:08  Dingo1997  阅读(29)  评论(0)    收藏  举报