একটি সংখ্যা 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