কম্পিউটার

C++ এ মিরর প্রতিফলন


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

সুতরাং p =2, এবং q =1 হলে, কেসটি −

এর মত হবে

C++ এ মিরর প্রতিফলন

সুতরাং আউটপুট হবে 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

  1. C++ এ বাইনারি ট্রিতে প্রদত্ত নোডের আয়না খুঁজুন

  2. C++ এ 2-D সমতলে একটি বিন্দুর আয়না চিত্র খুঁজুন

  3. C++ এ static_assert

  4. C++ এ রেখার প্রতিফলন