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

C++ में दी गई श्रृंखला का योग ज्ञात करने का प्रोग्राम


इस समस्या में, हमें एक श्रृंखला के लिए दो संख्याएं n और k दी गई हैं। हमारा कार्य C++ में दी गई श्रृंखला का योग ज्ञात करने का एक प्रोग्राम बनाना है।

श्रृंखला है -

(1*2*3*...*k) + (2*3*...k*(k+1)) + (3*4*...*k*k+1*k+2) + ((n-k+1)*(nk+ 2)*... *(n-k+k).

समस्या विवरण - यहां, हम दिए गए k के मान के आधार पर nवें पद तक दी गई श्रृंखला का योग ज्ञात करेंगे।

आइए एक उदाहरण लेकर समस्या को समझते हैं

इनपुट

n = 4, k = 3

आउटपुट

30

व्याख्या

श्रृंखला: (1*2*3) + (2*3*4) = 30

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

एक सरल समाधान पुनरावृत्ति का उपयोग करके योग ढूंढना है। हम दो लूप का उपयोग करेंगे, एक प्रत्येक पद के लिए और दूसरा पद का मान ढूंढने के लिए। फिर प्रत्येक पद के मान को जोड़कर परिणाम प्राप्त करेंगे।

हमारे समाधान के कार्य को दर्शाने वाला प्रोग्राम

उदाहरण

#include <iostream> using namespace std; int findSeriesSum(int n, int k){    int sumVal = 0, term = 1;    for(int i = 1; i <= (n-k + 1); i++){       term = 1;       for(int j = i; j< (k+i); j++){          term *= j;       }       sumVal += term;    }    return sumVal; } int main(){    int n = 4, k = 3;    cout<<"The sum of series is "<<findSeriesSum(n, k);    return 0; }

आउटपुट

The sum of series is 30

यह समाधान कुशल नहीं है क्योंकि इसमें एक नेस्टेड लूप की आवश्यकता होती है जो समय जटिलता को O(n2) क्रम का बना देता है।

एक कुशल समाधान श्रृंखला के लिए सामान्य सूत्र का उपयोग करना हो सकता है। सूत्र है,

$\frac{(n+1)*n*(n-1)*(n-2)*....*(n-k+1)}{k+1}$

हमारे समाधान के कार्य को दर्शाने वाला प्रोग्राम

उदाहरण

#include <iostream> using namespace std; int findSeriesSum(int n, int k){    int sumVal = 1;    for(int i = n+1; i > n-k; i--)    sumVal *= i;    sumVal /= (k + 1);    return sumVal; } int main(){    int n = 4, k = 3;    cout<<"The sum of series is "<<findSeriesSum(n, k);    return 0; }

आउटपुट

The sum of series is 30

  1. - C++ प्रोग्राम: दिए गए सीक्वेंस के सबसे लंबे प्रीफिक्स मैचिंग को खोजना

    यहां हम एक C++ प्रोग्राम पर चर्चा करेंगे जो एक सेट ऑफ सीक्वेंस में सभी सीक्वेंस के लिए कॉमन सबसे लंबी सबसीक्वेंस खोजता है। एल्गोरिदम Begin स्ट्रिंग्स की ऐरे को इनपुट के रूप में लें। function matchedPrefixtill(): स्ट्रिंग s1 और s2 के बीच मैच्ड प्रीफिक्स खोजें: n1 = स्ट्रिंग s1 की लं

  1. - C++ प्रोग्राम: दो नोड्स के बीच पथ की जांच (BFS)

    यह C++ प्रोग्राम Breadth-First Search (BFS) एल्गोरिदम का उपयोग करके निर्धारित करता है कि एक डायरेक्टेड ग्राफ में दो दिए गए नोड्स के बीच कोई पथ मौजूद है या नहीं। एल्गोरिदम शुरुआत 1. फंक्शन isReach() रिकर्सिव फंक्शन है जो जांचता है कि d, s से पहुंच योग्य है या नहीं: A) सभी वर्टेक्स को अनविजिट

  1. - C++ प्रोग्राम: दी गई सीक्वेंस का लॉन्गेस्ट इन्क्रीजिंग सबसीक्वेंस ढूंढना

    लॉन्गेस्ट इन्क्रीजिंग सबसीक्वेंस (LIS) एक ऐसा सबसीक्वेंस होता है जहां प्रत्येक एलिमेंट अपने पिछले एलिमेंट से बड़ा होता है। यहां हम पूर्णांकों के एक सेट से लॉन्गेस्ट इन्क्रीजिंग सबसीक्वेंस की लंबाई ढूंढने का प्रयास करेंगे। इनपुट: पूर्णांकों का सेट {0, 8, 4, 12, 2, 10, 6, 14, 1, 9, 5, 13, 3, 11, 7, 1