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

C++ में बाइनरी स्ट्रिंग के 1 से शुरू होने वाले यूनिक परम्यूटेशन की संख्या


दिए गए समस्या में, हमें 0 और 1 से बनी एक स्ट्रिंग दी गई है; हमें उन परम्यूटेशन की कुल संख्या निकालनी है जिनमें स्ट्रिंग 1 से शुरू होती है। चूंकि उत्तर बहुत बड़ा हो सकता है, इसलिए हम इसे 1000000007 से मोड्यूलो करके प्रिंट करते हैं।

इनपुट: str = "10101001001" आउटपुट: 210 इनपुट: str = "101110011" आउटपुट: 56

हम इस समस्या को कॉम्बिनेटोरिक्स और कुछ सूत्र बनाकर हल करेंगे।

समाधान खोजने का दृष्टिकोण

इस दृष्टिकोण में, हम स्ट्रिंग में 0 और 1 की संख्या गिनेंगे। मान लें n स्ट्रिंग में मौजूद 1 की संख्या है और m 0 की संख्या है, और L दी गई स्ट्रिंग की लंबाई है, तो इस समस्या को हल करने के लिए हमारा सूत्र होगा (L-1)! / (n-1)! * m!।

उदाहरण

#include <bits/stdc++.h> #define MOD 1000000007 // 1e9 + 7 को MOD परिभाषित करना using namespace std; long long fact(long long n) {    if(n <= 1)    return 1;    return ((n % MOD) * (fact(n-1) % MOD)) % MOD; } int main() {    string s = "101110011";    long long L = s.size(); // दी गई स्ट्रिंग की लंबाई    long long count_1 = 0, count_0 = 0; // 1 और 0 की गिनती    for(auto x : s) {       if(x == '1')          count_1++; // 1 की फ्रीक्वेंसी       else         count_0++; // 0 की फ्रीक्वेंसी    }    if(count_1 == 0){       cout << "0\n"; // यदि स्ट्रिंग में केवल 0 हैं तो उत्तर 0 होगा    } else {       long long factL = fact(L-1); // (L-1)!       long long factn = fact(count_1 - 1); // (n-1)!       long long factm = fact(count_0); // m!       long long ans = factL / (factn * factm); // सूत्र लागू करना       cout << ans << "\n";    }    return 0; }

आउटपुट

56

दिए गए प्रोग्राम की समय जटिलता O(N) है, जहां N दी गई स्ट्रिंग की लंबाई है।

उपरोक्त कोड की व्याख्या

इस दृष्टिकोण में, हम अपनी स्ट्रिंग के अंदर मौजूद 1 और 0 की संख्या गिन रहे हैं, अब हम शुरुआत में एक 1 रखते हैं और फिर शेष L-1 लंबाई की स्ट्रिंग में 0 और 1 के सभी संभावित परम्यूटेशन बनाते हैं, जिससे हमें (L-1)! / (n-1)! * m! का सूत्र मिलता है। जहां (n-1)! शेष 1 के परम्यूटेशन हैं, और m! 0 के परम्यूटेशन हैं।

निष्कर्ष

इस लेख में, हमने बाइनरी स्ट्रिंग के 1 से शुरू होने वाले यूनिक परम्यूटेशन की संख्या निकालने की समस्या को कॉम्बिनेटोरिक्स लगाकर और सूत्र बनाकर हल किया। हमने इस समस्या के लिए C++ प्रोग्राम और पूरा दृष्टिकोण भी सीखा। हम यही प्रोग्राम C, Java, Python आदि अन्य भाषाओं में भी लिख सकते हैं। आशा है आपको यह लेख उपयोगी लगा होगा।

  1. C++ का उपयोग करके पेंटागोनल पिरामिडल संख्या ज्ञात करना C++ का उपयोग करके पेंटागोनल पिरामिडल संख्या ज्ञात करना

    एक पेंटागोनल पिरामिडल संख्या पेंटागोनल बेस पिरामिड में वस्तुओं की संख्या के बराबर होती है। नीचे कुछ पेंटागोनल संख्याएं देखें। N तक पेंटागोनल संख्याओं का योग Nवीं पेंटागोनल पिरामिडल संख्या के बराबर होता है। इस लेख में, हम Nवीं पेंटागोनल पिरामिडल संख्या खोजने पर चर्चा करेंगे, उदाहरण के लिए: इनपुट:

  1. C++ में स्ट्रिंग के सबस्ट्रिंग्स की संख्या निकालना C++ में स्ट्रिंग के सबस्ट्रिंग्स की संख्या निकालना

    इस लेख में, आप एक दी गई स्ट्रिंग में बनने वाले सबस्ट्रिंग्स (गैर-खाली) की संख्या निकालने के दृष्टिकोण के बारे में जानेंगे।इनपुट: string = moon आउटपुट: 10 व्याख्या: सबस्ट्रिंग्स हैं m, o, o, n, mo, oo, on, moo, oon और moon। इनपुट: string = yellow आउटपुट: 21समाधान खोजने का दृष्टिकोणमान लें स्ट्रिंग की

  1. C++ का उपयोग करके स्टॉपिंग स्टेशनों की संख्या ज्ञात करें C++ का उपयोग करके स्टॉपिंग स्टेशनों की संख्या ज्ञात करें

    बिंदु X और Y के बीच n संख्या में इंटरमीडिएट ट्रेन स्टेशन हैं। उन विभिन्न तरीकों की गणना करें जिनसे ट्रेनों को s स्टेशनों पर रुकने के लिए व्यवस्थित किया जा सकता है जैसे कि कोई दो स्टेशन एक-दूसरे के बगल में न हों। तो इस लेख में, हम स्टॉपिंग स्टेशनों की संख्या ज्ञात करने के लिए हर संभव दृष्टिकोण की व्य