আমাদের একটি পূর্ণসংখ্যা n আছে বিবেচনা করা যাক. সমস্যা হল পরীক্ষা করা, এই পূর্ণসংখ্যার বাইনারি সমতুল্যে বিকল্প প্যাটার্ন আছে কি না। বিকল্প প্যাটার্ন মানে 101010….
পদ্ধতিটি হল:num =n XOR (n>> 1) গণনা করুন, এখন যদি num-এর সমস্ত বিট 1 হয়, তাহলে num-এর বিকল্প প্যাটার্ন আছে।
উদাহরণ
#include <iostream> #include <algorithm> using namespace std; bool isAllBitSet(int n){ if (((n + 1) & n) == 0) return true; return false; } bool hasAlternatePattern(unsigned int n) { unsigned int num = n ^ (n >> 1); return isAllBitSet(num); } int main() { unsigned int number = 42; if(hasAlternatePattern(number)) cout << "Has alternating pattern"; else cout << "Has no alternating pattern"; }
আউটপুট
Has alternating pattern