इस ट्यूटोरियल में, हम एक प्रोग्राम लिखने जा रहे हैं जो सबसे बड़ी संख्या को ढूंढता है जो दिए गए x से कम है और इसमें अधिकतम k सेट बिट्स होने चाहिए।
आइए समस्या को हल करने के लिए चरणों को देखें।
- संख्याओं x और k को प्रारंभ करें।
- संख्या x में सेट बिट्स खोजें।
- एक लूप लिखें जो x - k के सेट बिट्स काउंट को पुनरावृत्त करता है।
- x के मान को x और (x - 1) से अपडेट करें।
- रिटर्न x.
उदाहरण
आइए कोड देखें।
#include <bits/stdc++.h>
using namespace std;
int largestNumberWithKBits(int x, int k) {
int set_bit_count = __builtin_popcount(x);
if (set_bit_count <= k) {
return x;
}
int diff = set_bit_count - k;
for (int i = 0; i < diff; i++) {
x &= (x - 1);
}
return x;
}
int main() {
int x = 65, k = 2;
cout << largestNumberWithKBits(x, k) << endl;
return 0;
} आउटपुट
यदि आप उपरोक्त कोड चलाते हैं, तो आपको निम्न परिणाम प्राप्त होंगे।
65
निष्कर्ष
यदि ट्यूटोरियल में आपके कोई प्रश्न हैं, तो उनका टिप्पणी अनुभाग में उल्लेख करें।