Giả sử có một căn phòng hình vuông đặc biệt với gương trên mỗi bức tường trong số bốn bức tường. Ở mỗi góc trừ góc Tây Nam đều có các cơ quan thụ cảm. Chúng được đánh số là 0, 1 và 2. Bây giờ căn phòng hình vuông có các bức tường chiều dài p, và một tia laze từ góc phía tây nam gặp bức tường phía đông ở khoảng cách q từ điểm nhận thứ 0. Chúng ta phải tìm số thụ thể mà tia gặp đầu tiên.
Vì vậy, nếu p =2 và q =1, thì trường hợp sẽ như thế này -
Vì vậy, đầu ra sẽ là 2, vì tia gặp thụ thể 2 trong lần đầu tiên nó bị phản xạ trở lại bức tường bên trái.
Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -
- trong khi p và q đều chẵn,
- p:=p / 2
- q:=q / 2
- nếu p chẵn thì trả về 2
- nếu q chẵn thì trả về 0
- trả về 1.
Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -
Ví dụ
#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
int mirrorReflection(int p, int q) {
while(p % 2 == 0 && q % 2 == 0){
p >>= 1;
q >>= 1;
}
if(p % 2 == 0) return 2;
if(q % 2 == 0) return 0;
return 1;
}
};
main(){
Solution ob;
cout << (ob.mirrorReflection(2, 1));
} Đầu vào
2 1
Đầu ra
2