Computer >> Máy Tính >  >> Lập trình >> C ++

Phản chiếu gương trong C ++

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 -

Phản chiếu gương trong C ++

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