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