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

बाइनरी प्रतिनिधित्व में लगातार 1s के साथ 1 से n बिट संख्याएं?

इस समस्या में, हमें कुछ ऐसी बाइनरी संख्याएँ ज्ञात करनी हैं जिनमें क्रमागत 1 नहीं है। 3-बिट बाइनरी स्ट्रिंग में, तीन बाइनरी नंबर 011, 110, 111 होते हैं, जिनके पास लगातार 1s होते हैं, और पांच नंबर ऐसे होते हैं जिनमें लगातार 1s नहीं होता है। तो इस एल्गोरिथम को 3-बिट नंबरों के लिए लागू करने के बाद, उत्तर 5 होगा।

यदि a[i] बाइनरी नंबरों का सेट हो, जिसके बिट्स की संख्या i है, और इसमें कोई लगातार 1s नहीं है, और b[i] बाइनरी नंबर का सेट है, जहां बिट्स की संख्या i है, और लगातार 1s है, तब पुनरावर्ती संबंध होते हैं जैसे -

a[i] := a[i - 1] + b[i - 1]

b[i] := a[i - 1]

इनपुट

यह एल्गोरिथम बाइनरी नंबर के लिए बिट्स की संख्या लेता है। मान लीजिए इनपुट 4 है।

आउटपुट

यह उन बाइनरी स्ट्रिंग्स की संख्या लौटाता है जिनमें लगातार 1 नहीं है।

यहां परिणाम − 8 है। (8 बाइनरी स्ट्रिंग हैं जिनमें लगातार 1 नहीं है)

एल्गोरिदम

गिनतीBinNums(n)

Input: n is the number of bits.
Output: Count how many numbers are present which have no consecutive 1.
Begin
   define lists with strings ending with 0 and ending with 1
   endWithZero[0] := 1
   endWithOne[0] := 1
   for i := 1 to n-1, do
      endWithZero[i] := endWithZero[i-1] + endWithOne[i-1]
      endWithOne[i] := endWithZero[i-1]
   done
   return endWithZero[n-1] + endWithOne[n-1]
End

उदाहरण

#include <iostream>
using namespace std;
int countBinNums(int n) {
   int endWithZero[n], endWithOne[n];
   endWithZero[0] = endWithOne[0] = 1;
   for (int i = 1; i < n; i++) {
      endWithZero[i] = endWithZero[i-1] + endWithOne[i-1];
      endWithOne[i] = endWithZero[i-1];
   }
   return endWithZero[n-1] + endWithOne[n-1];
}
int main(){
   int n;
   cout << "Enter number of bits: "; cin >> n;
   cout << "Number of binary numbers without consecutive 1's: "<<countBinNums(n) << endl;
   return 0;
}

आउटपुट

Enter number of bits: 4
Number of binary numbers without consecutive 1's: 8

  1. सी++ में अगले नंबर का बाइनरी प्रतिनिधित्व

    इस समस्या में, हमें एक संख्या का द्विआधारी प्रतिनिधित्व दिया जाता है और हमें अगली संख्या का द्विआधारी प्रतिनिधित्व यानी वह संख्या ढूंढनी होती है जो दी गई संख्या में एक जोड़ने के बाद प्राप्त होती है। द्विआधारी प्रतिनिधित्व संख्या का आधार संख्या के आधार को आधार 2 में बदल रहा है और केवल 0 या 1 का उपयो

  1. C++ में दी गई संख्या का बाइनरी प्रतिनिधित्व

    एक बाइनरी नंबर एक संख्या है जिसमें केवल दो अंक 0 और 1 होते हैं। उदाहरण के लिए, 01010111। किसी दिए गए नंबर को बाइनरी रूप में दर्शाने के कई तरीके हैं। पुनरावर्ती विधि इस विधि का उपयोग किसी संख्या को उसके द्विआधारी रूप में प्रत्यावर्तन का उपयोग करके दर्शाने के लिए किया जाता है। एल्गोरिदम Step 1 : if

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

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