কম্পিউটার

C++ এ যোগফল N দিয়ে পরপর সংখ্যার সম্ভাব্য সকল যোগফল প্রিন্ট করুন


এই সমস্যায়, আমাদের একটি ধনাত্মক পূর্ণসংখ্যা 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++ এ 0 যোগ সহ সমস্ত সাবয়ারে প্রিন্ট করুন

  2. C++ এ বাইনারি ট্রিতে একটি নির্দিষ্ট যোগফল সহ রুট থেকে সমস্ত পাথ প্রিন্ট করুন

  3. C++ এ প্রদত্ত যোগফল সহ সমস্ত ট্রিপলেট প্রিন্ট করুন

  4. C++ এ প্রদত্ত যোগফল সহ সমস্ত জোড়া প্রিন্ট করুন