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