কম্পিউটার টিউটোরিয়াল

C++-এ একটি সংখ্যার বাইনารিতে অল্টারনেট প্যাটার্ন আছে কিনা তা যাচাই করা (O(1) পদ্ধতি)


ধরুন আমাদের একটি ইন্টিজার n আছে। সমস্যাটি হলো চেক করা: এই ইন্টিজারের বাইনারি রিপ্রেজেন্টেশনে অল্টারনেট প্যাটার্ন (101010…) আছে কিনা।

অ্যাপ্রোচটি হলো: num = n XOR (n >> 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

  1. C++ প্রোগ্রাম: বড় সংখ্যা ৯ দিয়ে বিভাজ্য কিনা চেক (স্ট্রিং ইনপুট)

  2. C++ প্রোগ্রাম: বড় সংখ্যা ৩ দিয়ে বিভাজ্য কিনা চেক (স্ট্রিং ইনপুট)

  3. প্যালিনড্রোম (Palindrome) নম্বর চেক করার C++ প্রোগ্রাম

  4. C++ প্রোগ্রাম: সংখ্যা Even (জোড়) নাকি Odd (বিজোড়) যাচাই