इस समस्या में, हमें एक संख्या का द्विआधारी प्रतिनिधित्व दिया जाता है और हमें अगली संख्या का द्विआधारी प्रतिनिधित्व यानी वह संख्या ढूंढनी होती है जो दी गई संख्या में एक जोड़ने के बाद प्राप्त होती है।
द्विआधारी प्रतिनिधित्व संख्या का आधार संख्या के आधार को आधार 2 में बदल रहा है और केवल 0 या 1 का उपयोग करके संख्या का प्रतिनिधित्व कर रहा है।
उदाहरण के लिए, 14 का बाइनरी प्रतिनिधित्व 1110 है।
तो, यहाँ हमें एक संख्या दी जाएगी, मान लीजिए n बाइनरी रूप में है। और हमें n+1 का बाइनरी प्रतिनिधित्व खोजना होगा।
इस समस्या को हल करने के लिए, हमें बाइनरी एडिशन की मूल बातें जानने की जरूरत है। देखते हैं क्या होता है जब 1 को 0 या 1 में बाइनरी रूप में जोड़ा जाता है।
0 + 1 =1
1 + 1 =10
उदाहरण
आइए एक उदाहरण देखें कि उपरोक्त समस्या को कैसे हल किया जाए,
Input: 010010111 Output: 010011000 Explanation : (010010111)2 is the binary representation of 152 and the next number will be 153 whose binary representation is (010011000)2. We will use binary addition here and add binary (1)2 to the binary representation of the number.
उपरोक्त उदाहरण से हम देख सकते हैं कि संख्या में बाइनरी 1 जोड़ने पर दाईं ओर से शुरू होने वाले सभी 0 में परिवर्तित हो जाते हैं, जब तक कि पहला 0 सामने नहीं आ जाता है और यह 0 1 पर फ़्लिप हो जाता है। अब इस तर्क के लिए एक एल्गोरिथ्म बनाते हैं।पी>
एल्गोरिदम
Step 1 : Start right to left i.e n-1 to 0 Step 2 : If 0 is encountered, change it 1 and break Step 3 : If one is encounter change it to 0. Step 4 : When no zero is encountered, add 1 to the start of the array. Step 5 : Print the array.
उदाहरण
अब, आइए इस एल्गोरिथम के कोड कार्यान्वयन को देखें।
#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