কম্পিউটার

C++ এ সেট বিটের বিজোড় সংখ্যা সহ পূর্ণসংখ্যার সংখ্যা


একটি সংখ্যা n দেওয়া হলে, আমাদের তাদের বাইনারি আকারে সেট বিটের বিজোড় সংখ্যা সহ পূর্ণসংখ্যার সংখ্যা খুঁজে বের করতে হবে। আসুন একটি উদাহরণ দেখি।

ইনপুট

n = 10

আউটপুট

5

1 থেকে 10 পর্যন্ত 5টি পূর্ণসংখ্যা রয়েছে যার বাইনারি আকারে বিজোড় সংখ্যক সেট বিট রয়েছে৷

অ্যালগরিদম

  • N সংখ্যাটি শুরু করুন।

  • বাইনারী আকারে সেট বিটের সংখ্যা গণনা করার জন্য একটি ফাংশন লিখুন।
  • গণনা শুরু করুন 0।

  • একটি লুপ লিখুন যা 1 থেকে পুনরাবৃত্তি হয় প্রতি N.

    • প্রতিটি পূর্ণসংখ্যার সেট বিট গণনা করুন।

    • সেট বিট সংখ্যা বিজোড় হলে গণনা বৃদ্ধি করুন।

  • গণনা ফেরত দিন।

বাস্তবায়ন

C++

-এ উপরের অ্যালগরিদমের বাস্তবায়ন নিচে দেওয়া হল
#include <bits/stdc++.h>
using namespace std;
int getSetBitsCount(int n) {
   int count = 0;
   while (n) {
      if (n % 2 == 1) {
         count += 1;
      }
      n /= 2;
   }
   return count;
}
int getOddSetBitsIntegerCount(int n) {
   int count = 0;
   for (int i = 1; i <= n; i++) {
      if (getSetBitsCount(i) % 2 == 1) {
         count += 1;
      }
   }
   return count;
}
int main() {
   int n = 10;
   cout << getOddSetBitsIntegerCount(n) << endl;
   return 0;
}

আউটপুট

আপনি যদি উপরের কোডটি চালান, তাহলে আপনি নিম্নলিখিত ফলাফল পাবেন।

5

  1. C++ এ জোড় এবং বিজোড় পণ্য সহ অর্ডার করা জোড়ার সংখ্যা গণনা করুন

  2. C++ এ একই সংখ্যক সেট বিট সহ সংলগ্ন অ্যারে উপাদানের সর্বাধিক সংখ্যা

  3. C++ এ সেট বিটের গণনা অনুসারে একটি অ্যারে সাজান

  4. C++ এ k সেট বিট সহ একটি সংখ্যাকে সর্বাধিক করার জন্য ন্যূনতম ফ্লিপস প্রয়োজন।