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

C++-এ বাইনারি সংখ্যায় অল্টারনেটিং বিট (Binary Number with Alternating Bits)

একটি ধনাত্মক পূর্ণসংখ্যা দেওয়া আছে। আমাদের চেক করতে হবে এর বাইনারি রিপ্রেজেন্টেশনে অল্টারনেটিং বিট আছে কিনা, অর্থাৎ দুটি সন্নিহিত বিটের মান সবসময় ভিন্ন থাকবে।

ইনপুট ১০ হলে আউটপুট True, কারণ ১০-এর বাইনারি ১০১০।

সমাধানের ধাপসমূহ

  • p := n AND 1
  • যদি n < 2 হয়, true রিটার্ন করুন
  • n := n/2
  • যখন n != 0:
    • c := n AND 1
    • যদি c XOR p == 0 হয়, false রিটার্ন করুন
    • p := c
    • n := n/2
  • true রিটার্ন করুন

উদাহরণ

#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
    bool hasAlternatingBits(int n) {
        bool p=n&1;
        bool c;
        if(n<2) return true;
        n>>=1;
        while(n){
            c=n&1;
            if(c^p==0) return false;
            p=c;
            n>>=1;
        }
        return true;
    }
};
int main(){
    Solution ob;
    cout << (ob.hasAlternatingBits(10));
}

ইনপুট

10

আউটপুট

1
  1. C++-এ বাইনারি রিপ্রেজেন্টেশন থেকে প্রিভিয়াস নম্বর বের করা

  2. C++-এ বাইনারি রিপ্রেজেন্টেশন থেকে নেক্সট নম্বর বের করা

  3. দেওয়া সংখ্যার বাইনারি রিপ্রেজেন্টেশন C++-এ

  4. C++-এ k সেট বিটস সহ একটি নম্বরকে ম্যাক্সিমাইজ করতে ন্যূনতম ফ্লিপ বের করা