हमें बाइनरी अनुक्रम के लिए इनपुट के रूप में कई बिट 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