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