ধরুন চার দেয়ালের প্রতিটিতে আয়না সহ একটি বিশেষ বর্গাকার ঘর আছে। দক্ষিণ-পশ্চিম কোণ ব্যতীত প্রতিটি কোণে রিসেপ্টর রয়েছে। এগুলিকে 0, 1, এবং 2 হিসাবে সংখ্যা করা হয়েছে। এখন বর্গাকার ঘরে p দৈর্ঘ্যের দেয়াল রয়েছে এবং দক্ষিণ-পশ্চিম কোণ থেকে একটি লেজার রশ্মি প্রথমে 0 তম রিসেপ্টর থেকে q দূরত্বে পূর্ব প্রাচীরের সাথে মিলিত হয়। রশ্মিটি প্রথমে যে রিসেপ্টরের সাথে মিলিত হয় তার সংখ্যা আমাদের খুঁজে বের করতে হবে।
সুতরাং p =2, এবং q =1 হলে, কেসটি −
এর মত হবে

সুতরাং আউটপুট হবে 2, যেহেতু রশ্মি রিসেপ্টর 2-এর সাথে মিলিত হয় যখন এটি প্রথমবার বাম দেয়ালে প্রতিফলিত হয়।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- যদিও p এবং q উভয়ই জোড়,
- p :=p/2
- q :=q / 2
- যদি p জোড় হয়, তাহলে 2 ফেরত দিন
- যদি q জোড় হয়, তাহলে 0 ফেরত দিন
- প্রত্যাবর্তন 1।
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
উদাহরণ
#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));
} ইনপুট
2 1
আউটপুট
2