इस समस्या में, हमें एक संख्या का बाइनरी प्रतिनिधित्व दिया जाता है और हमें अगली संख्या का बाइनरी प्रतिनिधित्व ढूंढना होता है यानी दी गई संख्या में एक जोड़ने के बाद परिणामी संख्या।
बाइनरी प्रतिनिधित्व एक संख्या का आधार को आधार 2 में बदलना और संख्या को केवल 0 या 1 का उपयोग करके दर्शाना है।
उदाहरण के लिए, 14 का बाइनरी प्रतिनिधित्व 1110 है।
तो, यहां हमें बाइनरी रूप में एक संख्या दी जाएगी, मान लीजिए n। और हमें n+1 का बाइनरी प्रतिनिधित्व ढूंढना है।
इस समस्या को हल करने के लिए, हमें बाइनरी एडिशन की मूल बातें जानने की जरूरत है। आइए देखें कि बाइनरी रूप में 0 या 1 में 1 जोड़ने पर क्या होता है।
0 + 1 = 1
1 + 1 = 10
उदाहरण
आइए देखें कि उपरोक्त समस्या को कैसे हल किया जाए:
इनपुट: 010010111 आउटपुट: 010011000 व्याख्या: (010010111)₂, 152 का बाइनरी प्रतिनिधित्व है और अगली संख्या 153 होगी जिसका बाइनरी प्रतिनिधित्व (010011000)₂ है। हम यहां बाइनरी एडिशन का उपयोग करेंगे और संख्या के बाइनरी प्रतिनिधित्व में बाइनरी (1)₂ जोड़ेंगे।
उपरोक्त उदाहरण से हम देख सकते हैं कि संख्या में बाइनरी 1 जोड़ने पर दाएं से शुरू होने वाले सभी 1s को 0 में बदल दिया जाता है, जब तक कि पहला 0 न मिल जाए और इस 0 को 1 में फ्लिप कर दिया जाता है। अब आइए इस तर्क के लिए एक एल्गोरिदम बनाते हैं।
एल्गोरिदम
चरण 1: दाएं से बाएं शुरू करें यानी n-1 से 0 तक चरण 2: यदि 0 मिले, तो इसे 1 में बदलें और ब्रेक करें चरण 3: यदि 1 मिले तो इसे 0 में बदलें। चरण 4: जब कोई जीरो न मिले, तो ऐरे की शुरुआत में 1 जोड़ें। चरण 5: ऐरे प्रिंट करें।
उदाहरण
अब, आइए इस एल्गोरिदम का कोड कार्यान्वयन देखें।
#include <bits/stdc++.h>
using namespace std;
string nextBinary(string num) {
int l = num.size();
int flag = 0;
for (int i = l - 1; i >= 0; i--) {
if (num.at(i) == '0') {
num.at(i) = '1';
flag = 1;
break;
} else
num.at(i) = '0';
}
if (flag < 0)
num = "1" + num;
return num;
}
int main() {
string number = "0111010111";
cout << "The Binary representation of the number is " << number << endl;
cout << "Binary representation of next number is " << nextBinary(number);
return 0;
} आउटपुट
The Binary representation of the number is 0111010111 Binary representation of next number is 0111011000