एक संख्या n को देखते हुए, हमें उनके बाइनरी रूप में विषम संख्या में सेट बिट्स के साथ पूर्णांकों की संख्या ज्ञात करनी होगी। आइए एक उदाहरण देखें।
इनपुट
n = 10
आउटपुट
5
1 से 10 तक के 5 पूर्णांक हैं जिनके बाइनरी रूप में विषम संख्या में सेट बिट्स हैं।
एल्गोरिदम
-
नंबर एन शुरू करें।
- बाइनरी रूप में सेट बिट्स की संख्या गिनने के लिए एक फ़ंक्शन लिखें।
-
गिनती शुरू करें 0.
-
एक लूप लिखें जो 1 . से पुनरावृत्त हो करने के लिए एन.
-
प्रत्येक पूर्णांक के सेट बिट्स की गणना करें।
-
यदि सेट बिट्स की संख्या विषम है तो गिनती बढ़ाएँ।
-
-
गिनती वापस करें।
कार्यान्वयन
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