এই সমস্যায়, আমাদের N এবং M দুটি সংখ্যা দেওয়া হয়েছে। আমাদের কাজ হল সংখ্যাটির বাইনারি উপস্থাপনায় ডানদিকের ভিন্ন বিটের সূচক খুঁজে বের করা।
সমস্যাটি বোঝার জন্য একটি উদাহরণ দেওয়া যাক,
ইনপুট − N =12 , M =9
আউটপুট − 2
ব্যাখ্যা − (12)2 =1100 এবং (10)2 =1010৷
ডান থেকে দ্বিতীয় বিটটি একটি ভিন্ন বিট।
এই সমস্যা সমাধানের জন্য, আমাদের সংখ্যার বিভিন্ন বিট খুঁজে বের করতে হবে। সমস্ত ভিন্ন বিট খুঁজতে আমরা M এবং N-এর xor খুঁজে পাব। তারপর আমরা M^N-এর ডানদিকের বিটটি খুঁজে পাব।
এটি বোঝার জন্য কিছুটা জটিল বলে মনে হচ্ছে আসুন এই পদ্ধতিটি ব্যবহার করে একটি উদাহরণ সমাধান করি।
N = 12 , M = 9 N^M = 0110.
এখানে একটি ডানদিকের সেট বিট সূচী 2 এ রয়েছে।
উদাহরণ
আমাদের সমাধানের বাস্তবায়ন দেখানোর জন্য প্রোগ্রাম,
#include <iostream> #include <math.h> using namespace std; int rightSetBit(int N) { int bitIndex = log2(N & -N)+1; return bitIndex; } void rightDiffBit(int m, int n) { int diffBit = rightSetBit(m^n); cout<<diffBit; } int main() { int N = 12, M = 10; cout<<"Postion of first right different bit of the number "<<N<<" & "<<M<<" is "; rightDiffBit(N, M); return 0; }
আউটপুট
Postion of first right different bit of the number 12 & 10 is 2