इस ट्यूटोरियल में, हम एक प्रोग्राम लिखने जा रहे हैं जो m 1's और m - 1 0's वाली सबसे बड़ी संख्या ढूंढता है।
आइए समस्या को हल करने के चरण देखते हैं।
- दो वेरिएबल bits और result को क्रमशः 2 और 1 से आरंभ करें।
- एक लूप लिखें जो 1 से n तक पुनरावृति करता है।
- पुनरावृत्ति वेरिएबल मान को (pow(2, bits) - 1) * (pow(2, bits - 1)) से अपडेट करें।
- यदि पुनरावृत्ति वेरिएबल n से कम है, तो परिणाम को i से अपडेट करें।
- बिट्स काउंट बढ़ाएं।
- परिणाम वापस करें।
उदाहरण
आइए कोड देखते हैं।
#include <bits/stdc++.h>
using namespace std;
long long getTheNumber(long long n) {
long bits = 2;
long long result = 1;
long long i = 1;
while (i < n) {
i = (int)(pow(2, bits) - 1) * (pow(2, bits - 1));
if (i < n) {
result = i;
}
bits++;
}
return result;
}
int main() {
long long n = 654;
cout << getTheNumber(n) << endl;
return 0;
}
आउटपुट
यदि आप उपरोक्त कोड चलाते हैं, तो आपको निम्नलिखित परिणाम मिलेगा।
496
निष्कर्ष
यदि ट्यूटोरियल में आपके कोई प्रश्न हैं, तो उन्हें टिप्पणी अनुभाग में उल्लेख करें।