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

स्पष्टीकरण

Series: (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(n 2 की समय जटिलता को बनाता है। )।

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

$\frac{(\square+1)*\square*(\square-1)*(\square-2)*....*(\square-\square+1)}{\square+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++ प्रोग्राम पर चर्चा करेंगे। एल्गोरिदम Begin Take the array of strings as input. function matchedPrefixtill(): find the matched prefix between string s1 and s2 :    n1 = store length of string s

  1. सी ++ प्रोग्राम यह पता लगाने के लिए कि 2 दिए गए नोड्स के बीच पथ मौजूद है या नहीं

    यह एक सी ++ प्रोग्राम है जो यह पता लगाने के लिए है कि 2 दिए गए नोड्स के बीच पथ मौजूद है या नहीं एल्गोरिदम Begin    function isReach() is a recursive function to check whether d is reachable to s:    A) Mark all the vertices as unvisited.    B) Mark the current node as v

  1. सी ++ प्रोग्राम किसी दिए गए अनुक्रम के सबसे लंबे समय तक बढ़ते क्रम को खोजने के लिए

    सबसे लंबे समय तक बढ़ने वाला क्रम वह क्रम है जहां एक आइटम अपने पिछले आइटम से बड़ा होता है। यहां हम पूर्णांकों के एक सेट से सबसे लंबी बढ़ती अनुवर्ती लंबाई खोजने का प्रयास करेंगे। Input: A set of integers. {0, 8, 4, 12, 2, 10, 6, 14, 1, 9, 5, 13, 3, 11, 7, 15} Output: The length of longest increasing