Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> सी प्रोग्रामिंग

सी प्रोग्राम में 1 और 0 की समान संख्या के साथ अगली बड़ी संख्या का बाइनरी प्रतिनिधित्व?

मान लीजिए कि हमारे पास एक द्विआधारी संख्या है, जो एक संख्या n का प्रतिनिधित्व करती है। हमें एक संख्या का द्विआधारी निरूपण खोजना है जो सबसे छोटी है लेकिन n से बड़ी है, और इसमें भी 0s और 1s की समान संख्या है। तो अगर संख्या 1011 (दशमलव में 11) है, तो आउटपुट 1101 (13) होगा। अगली क्रमपरिवर्तन गणना का उपयोग करके यह समस्या पाई जा सकती है। आइए विचार प्राप्त करने के लिए एल्गोरिथम देखें।

एल्गोरिदम

नेक्स्टबिन (बिन) -

Begin
   len := length of the bin
   for i in range len-2, down to 1, do
      if bin[i] is 0 and bin[i+1] = 1, then
         exchange the bin[i] and bin[i+1]
         break
      end if
   done
   if i = 0, then there is no change, return
   otherwise j:= i + 2, k := len – 1
   while j < k, do
      if bin[j] is 1 and bin[k] is 0, then
         exchange bin[j] and bin[k]
         increase j and k by 1
      else if bin[i] is 0, then
         break
      else
         increase j by 1
      end if
   done
   return bin
End

उदाहरण

#include <iostream>
using namespace std;
string nextBinary(string bin) {
   int len = bin.size();
   int i;
   for (int i=len-2; i>=1; i--) {
      if (bin[i] == '0' && bin[i+1] == '1') {
         char ch = bin[i];
         bin[i] = bin[i+1];
         bin[i+1] = ch;
         break;
      }
   }
   if (i == 0)
   "No greater number is present";
   int j = i+2, k = len-1;
   while (j < k) {
      if (bin[j] == '1' && bin[k] == '0') {
         char ch = bin[j];
         bin[j] = bin[k];
         bin[k] = ch;
         j++;
         k--;
      }
      else if (bin[i] == '0')
         break;
      else
         j++;
   }
   return bin;
}
int main() {
   string bin = "1011";
   cout << "Binary value of next greater number = " << nextBinary(bin);
}

आउटपुट

Binary value of next greater number = 1101

  1. पायथन में i, j और k संख्या x, y, z अक्षरों के साथ बाद की संख्या खोजने का कार्यक्रम

    मान लीजिए कि हमारे पास x, y और z s के साथ एक स्ट्रिंग है, हमें बाद की संख्या ज्ञात करनी है जिसमें x वर्णों की संख्या है, उसके बाद y वर्णों की j संख्या और उसके बाद k z वर्णों की संख्या जहाँ i, j, k 1. इसलिए, यदि इनपुट s =xxyz जैसा है, तो आउटपुट 3 होगा, क्योंकि हम दो xyz और एक xxyz बना सकते हैं इसे

  1. बाइनरी प्रतिनिधित्व पैलिंड्रोम है या नहीं, यह जांचने के लिए पायथन प्रोग्राम?

    यहां हम विभिन्न पायथन इनबिल्ट फ़ंक्शन का उपयोग करते हैं। पहले हम संख्या को इसके बाइनरी में बदलने के लिए बिन () का उपयोग करते हैं, फिर स्ट्रिंग के बाइनरी रूप को उलट देते हैं और मूल के साथ तुलना करते हैं, यदि मेल खाते हैं तो पैलिंड्रोम अन्यथा नहीं। उदाहरण Input: 5 Output: palindrome स्पष्टीकरण 5 का

  1. पायथन प्रोग्राम यह जाँचने के लिए कि क्या दो संख्याओं का द्विआधारी प्रतिनिधित्व विपर्यय है।

    दो नंबर दिए। हमारा काम यह जांचना है कि क्या वे बाइनरी प्रतिनिधित्व में एक दूसरे के आरेख हैं या नहीं। हम काउंटर (पुनरावृत्त) विधि और शब्दकोश तुलना का उपयोग करके इस समस्या को जल्दी से अजगर में हल कर सकते हैं। उदाहरण Input: a = 8, b = 16 Output : Yes Binary representations of both numbers have same 0