ধরুন আমাদের একটি রেঞ্জ আছে [m, n] যেখানে 0 <=m <=n <=2147483647। আমাদের এই রেঞ্জের সমস্ত সংখ্যার বিটওয়াইজ AND খুঁজে বের করতে হবে, অন্তর্ভুক্ত। তাই পরিসীমা যদি [5, 7] হয়, তাহলে ফলাফল হবে 4।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
-
i :=0
-
যখন m n নয়, তারপর
-
m :=m/2, n :=n / 2, i 1 দ্বারা বাড়ান
-
-
i বার বাম দিকে সরানোর পরে m ফিরে আসুন।
উদাহরণ(C++)
আসুন আরও ভালোভাবে বোঝার জন্য নিচের বাস্তবায়ন দেখি −
#include <bits/stdc++.h> using namespace std; class Solution { public: int rangeBitwiseAnd(int m, int n) { int i = 0; while(m != n){ m >>= 1; n >>= 1; i++; } return m << i; } }; main(){ Solution ob; cout << (ob.rangeBitwiseAnd(5,7)); }
ইনপুট
5 7
আউটপুট
4