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

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