镜面反射Java
文章发布较早,内容可能过时,阅读注意甄别。
# 题目
有一个特殊的正方形房间,每面墙上都有一面镜子。除西南角以外,每个角落都放有一个接受器,编号为 0, 1,以及 2。
正方形房间的墙壁长度为 p,一束激光从西南角射出,首先会与东墙相遇,入射点到接收器 0 的距离为 q 。
返回光线最先遇到的接收器的编号(保证光线最终会遇到一个接收器)。
示例:
输入: p = 2, q = 1
输出: 2
解释: 这条光线在第一次被反射回左边的墙时就遇到了接收器 2 。
提示:
- 1 <= p <= 1000
- 0 <= q <= p
# 思路
while
# 解法
class Solution {
public int mirrorReflection(int p, int q) {
if(q==0)return 0;
int t=1;
while ((p*t) % q != 0) {
t++;
}
return (p*t/q)%2==0?2:t%2;
}
}
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
# 总结
- 分析出几种情况,然后分别对各个情况实现