समस्या कथन
एक अहस्ताक्षरित संख्या को देखते हुए, दी गई अहस्ताक्षरित संख्या के बिट्स का उपयोग करके बनाई जा सकने वाली न्यूनतम संख्या ज्ञात कीजिए।
उदाहरण
यदि इनपुट =10 तो उत्तर 3 होगा
10 का बाइनरी प्रतिनिधित्व 1010 है और 2सेट बिट्स के साथ न्यूनतम संख्या 0011 है यानी 3
एल्गोरिदम
1. Count the number of set bits. 2. (Number of set bits) ^ 2 – 1 represents the minimized number)
उदाहरण
#include <bits/stdc++.h>
using namespace std;
int getSetBits(int n) {
int cnt = 0;
while (n) {
++cnt;
n = n & (n - 1);
}
return cnt;
}
int getMinNumber(int n){
int bits = getSetBits(n);
return pow(2, bits) - 1;
}
int main() {
int n = 10;
cout << "Minimum number = " << getMinNumber(n) << endl;
return 0;
return 0;
} जब आप उपरोक्त प्रोग्राम को संकलित और निष्पादित करते हैं। यह निम्न आउटपुट उत्पन्न करता है
आउटपुट
Minimum number = 3