Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> C++

सी ++ में पहली और दूसरी छमाही बिट्स के समान योग के साथ भी लंबाई बाइनरी अनुक्रमों की गणना करें

हमें बाइनरी अनुक्रम के लिए इनपुट के रूप में कई बिट n दिए गए हैं। यहां लक्ष्य लंबाई 2n के द्विआधारी अनुक्रम को इस तरह खोजना है कि इसके पहले और दूसरे आधे बिट्स का योग बराबर हो। पहले n बिट्स और अगले n बिट्स का योग समान होता है।

हमारे पास एक द्विआधारी अनुक्रम है इसलिए किसी भी स्थान पर अंक डालने का एकमात्र विकल्प 0 और 1 है। पहली और दूसरी छमाही में n बिट्स के लिए, नहीं। संभावित संयोजनों में से हैं -

सभी शून्य के साथ n बिट्स (0 1) nC0=1

1 1 के nC1 के साथ n बिट्स

2 1 के nC2 के साथ n बिट्स

n 1 के nCn के साथ n बिट्स

2एन बिट्स के लिए

  • पहला हाफ 0 1 के साथ और दूसरा हाफ 0 1 के nC0 X nC0 के साथ

  • 1 1 के साथ पहली छमाही और 1 1 के nC1 X nC1 के साथ दूसरी छमाही

  • 2 1 के साथ पहली छमाही और 2 1 के nC2 X nC2 के साथ दूसरी छमाही

  • ...............

  • पहला आधा n 1 के साथ और दूसरा आधा n 1 के nCn X nCn के साथ

ऐसे कुल संयोजन =nC0*nC0 + nC1*nC1+.......+nCn*nCn

=(nC0)2+(nC1)2+............+(nCn)2

इनपुट

n=1

आउटपुट

Sequences with same sum of first and second half bits: 2

स्पष्टीकरण - संभावित 2*1=2 बिट क्रम 00,01,10,11 इन चार 01 और 10 में से योग =1

है

इनपुट

n=2

आउटपुट

Sequences with same sum of first and second half bits: 6

स्पष्टीकरण - संभावित 2*2 =4-बिट क्रम

इनमें से पहले 2 और अंतिम 2 बिट्स के योग वाले क्रम समान हैं -

0000,0101,0110,1001,1010,1111, कुल=6

नीचे दिए गए प्रोग्राम में इस्तेमाल किया गया तरीका इस प्रकार है

  • पूर्णांक 'बिट्स' संख्या को संग्रहीत करता है।

  • फ़ंक्शन findSeq(int n) इनपुट के रूप में n लेता है और पहले और दूसरे हाफ के 2n बिट्स के बराबर योग के साथ अनुक्रमों की संख्या देता है।

  • वैरिएबल nCi का उपयोग प्रारंभिक मान =1 को स्टोर करने के लिए किया जाता है क्योंकि nC0 1 है।

  • ans=0 प्रारंभ करें, जो ऐसे अनुक्रमों को nCi*nCi के योग के रूप में गिनेगा।

  • i=0 से n तक nCi*nCi को उत्तर में जोड़ें, उपरोक्त सूत्र के अनुसार प्रत्येक nCi की गणना करें।

  • लूप के अंत के बाद 'उत्तर' में मौजूद परिणाम को गिनती के रूप में लौटाएं।

उदाहरण

#include<iostream>
using namespace std;
// Returns the count of even length sequences
int findSeq(int n){
   int nCi=1; //nC0=1
   int ans = 1;
   for (int i = 1; i<=n ; i++){
      //nCi=(nCi-1)*(nCi/nCi-1)
      // nCi/nC(i-1) = (n+1-i)/i;
      nCi = (nCi * (n+1-i))/i;
      ans += nCi*nCi;
   }
   return ans;
}
int main(){
   int bits = 2;
   cout << "Count of binary sequences such that sum of first and second half bits is
   same: "<<findSeq(bits);
   return 0;
}

आउटपुट

Count of binary sequences such that sum of first and second half bits is same: 6

  1. C++ में एक बाइनरी ट्री (पुनरावर्ती और पुनरावर्ती) में आधे नोड्स की गणना करें

    हमें एक बाइनरी ट्री दिया गया है और कार्य एक बाइनरी ट्री में उपलब्ध आधे नोड्स की गणना करने के लिए पुनरावृत्ति और पुनरावर्ती दृष्टिकोण का उपयोग करना है। हाफ नोड्स वे नोड होते हैं जिनमें केवल एक बच्चा होता है और दूसरा बच्चा शून्य होता है। ध्यान दें कि आधे नोड्स में हम लीफ नोड्स पर विचार नहीं करते हैं।

  1. सी ++ प्रोग्राम दो संख्याओं को योग और उत्पाद दोनों के साथ खोजने के लिए एन के समान है

    इस ट्यूटोरियल में, हम दो संख्याओं (जैसे ए और बी) को खोजने के लिए एक प्रोग्राम पर चर्चा करेंगे, जैसे कि दोनों a+b = N and a*b = N are satisfied. दोनों समीकरणों में से a को हटाने पर हमें b और N में द्विघात समीकरण मिलता है, यानी b2 - bN + N = 0 इस समीकरण के दो मूल होंगे जो हमें a और b दोनों का मान दे

  1. सी ++ में दोनों तरफ सम या विषम संख्याओं की समान गणना के साथ ऐरे इंडेक्स

    यहां हम एक समस्या देखेंगे, मान लीजिए कि एक सरणी दी गई है। एन तत्व हैं। हमें एक सूचकांक ज्ञात करना है, जहाँ इसके बायीं ओर की सम संख्याओं की बारंबारता और इसके दायीं ओर की सम संख्याओं की बारंबारता समान हो, या इसके बायीं ओर की विषम संख्याओं की आवृत्ति इसके दाईं ओर की विषम संख्याओं की आवृत्ति के समान हो।