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

सी ++ में योग एन के साथ लगातार संख्याओं के सभी संभावित योग प्रिंट करें


इस समस्या में, हमें एक धनात्मक पूर्णांक N दिया जाता है और हमें N के बराबर योग के साथ सभी संभावित क्रमागत संख्याओं के अनुक्रम को प्रिंट करना होता है।

समस्या को समझने के लिए एक उदाहरण लेते हैं,

Input: N = 15
Output: 1 2 3 4 5
7 8

इस समस्या का एक सरल समाधान N/2 तक क्रमागत अनुक्रम संयोजनों को जोड़ना है। और फिर उस क्रम को प्रिंट करें जिसका योग N तक है।

उदाहरण

#include<iostream>
using namespace std;
void printConsequtiveSum(int N){
   int start = 1, end = (N+1)/2;
   while (start < end){
      int sum = 0;
      for (int i = start; i <= end; i++){
         sum = sum + i;
         if (sum == N){
            for (int j = start; j <= i; j++)
               cout<<j<<" ";
               cout<<endl;
               break;
         }
         if (sum > N)
            break;
      }
      sum = 0;
      start++;
   }
}
int main(){
   int N = 25;
   cout<<"Sequence of consicutive numbers that sum upto "<<N<<" are :\n";
   printConsequtiveSum(N);
   return 0;
}

आउटपुट

25 तक योग करने वाली क्रमागत संख्याओं का क्रम है -

3 4 5 6 7
12 13

यह तरीका आसान है लेकिन इतना कारगर नहीं है।

इसलिए, हमारे पास एक अधिक जटिल लेकिन इष्टतम समाधान है जो योग का ट्रैक रखने के लिए पूर्व-गणना की गई सरणी का उपयोग करेगा। इससे योग की जटिलता कम हो जाएगी।

उदाहरण

#include <iostream>
using namespace std;
void printConsequtiveSum(int N){
   int start = 1, end = 1;
   int sum = 1;
   while (start <= N/2){
      if (sum < N){
         end += 1;
         sum += end;
      }
      else if (sum > N){
         sum -= start;
         start += 1;
      }
      else if (sum == N){
         for (int i = start; i <= end; ++i)
            cout<<i<<" ";
            cout<<endl;
            sum -= start;
            start += 1;
      }
   }
}
int main(){
   int N = 25;
   cout<<"Sequence of consicutive numbers that sum upto "<<N<<" are:\n";
   printConsequtiveSum(N);
   return 0;
}

आउटपुट

लगातार संख्याओं का क्रम जिनका योग 25 तक होता है -

3 4 5 6 7
12 13

  1. C++ में बाइनरी ट्री में निर्दिष्ट योग के साथ रूट से सभी पथ प्रिंट करें

    इस समस्या में, हमें एक बाइनरी ट्री और एक योग S दिया जाता है। और हमें पेड़ के किसी भी नोड तक रूट से शुरू होने वाला पथ खोजना होता है, जो दिए गए योग के बराबर योग देता है। इनपुट Sum = 14 Output : path : 4 10 4 3 7 इस समस्या का समाधान खोजने के लिए, हमें बाइनरी ट्री के प्रीऑर्डर ट्रैवर्सल को खोजने की

  1. C++ में दिए गए योग के साथ सभी ट्रिपल प्रिंट करें

    इस समस्या में, हमें अद्वितीय पूर्णांकों की एक सरणी और एक योग दिया जाता है। और हमें उन त्रिगुणों को खोजना है जो समान योग बना सकते हैं। आइए समस्या को हल करने के लिए एक उदाहरण लेते हैं - Input : array = {0 , 2 , -1 , 1, -2} Sum = 1 Output : 1 2 -2 0 2 -1 इस समस्या को हल करने के लिए, हम योग प्रदान करन

  1. C++ में दिए गए योग के साथ सभी जोड़ियों को प्रिंट करें

    इस समस्या में, हमें पूर्णांकों की एक सरणी और एक पूर्णांक योग दिया जाता है और हमें पूर्णांकों के उन सभी युग्मों को प्रिंट करना होता है जिनका योग योग मान के बराबर होता है। समस्या को समझने के लिए एक उदाहरण लेते हैं: इनपुट − सरणी ={1, 6, -2, 3} योग =4 आउटपुट - (1, 3) , (6, -2) यहां, हमें दिए गए योग म