All Downloads are FREE. Search and download functionalities are using the official Maven repository.

g0801_0900.s0858_mirror_reflection.Solution Maven / Gradle / Ivy

There is a newer version: 1.38
Show newest version
package g0801_0900.s0858_mirror_reflection;

// #Medium #Math #Geometry #2022_03_27_Time_0_ms_(100.00%)_Space_40.8_MB_(64.41%)

/**
 * 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.
 *
 * **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
 *
 * **Constraints:**
 *
 * *   `1 <= q <= p <= 1000`
**/
public class Solution {
    public int mirrorReflection(int p, int q) {
        while (p % 2 == 0 && q % 2 == 0) {
            p /= 2;
            q /= 2;
        }
        if (p % 2 == 0) {
            return 2;
        } else if (q % 2 == 0) {
            return 0;
        } else {
            return 1;
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy