ধরুন চার দেয়ালের প্রতিটিতে আয়না সহ একটি বিশেষ বর্গাকার ঘর আছে। দক্ষিণ-পশ্চিম কোণ ব্যতীত প্রতিটি কোণে রিসেপ্টর রয়েছে। এগুলিকে 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