কম্পিউটার টিউটোরিয়াল

C++-এ liên tục সংখ্যার সমষ্টি N হলে সিকোয়েন্স প্রিন্ট


এই সমস্যাটিতে, আমাদের একটি পজিটিভ ইন্টিজার N দেওয়া আছে এবং আমাদের সেই সব সম্ভাব্য liên tục সংখ্যার সিকোয়েন্স প্রিন্ট করতে হবে যাদের সমষ্টি N-এর সমান।

একটি উদাহরণ দিয়ে বুঝি,

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

এই সমস্যার একটি সহজ সমাধান হলো N/2 পর্যন্ত liên tục সিকোয়েন্স কম্বিনেশন যোগ করে যাওয়া। এবং যা সমষ্টি 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; }

আউটপুট

The sequence of consecutive numbers that sum up to 25 are −

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; }

আউটপুট

Sequence of consecutive numbers that sum up to 25 are −

3 4 5 6 7 12 13

  1. শূন্য সম যোগফল वाले সব সাবঅ্যারে প্রিন্ট করা C++-তে

  2. বাইনারি ট্রিতে রুট থেকে নির্দিষ্ট যোগফল वाले সব পথ প্রিন্ট করা C++-তে

  3. নির্দিষ্ট যোগফল দিয়ে সব ট্রিপলেট প্রিন্ট করা C++-তে

  4. নির্দিষ্ট যোগফল দিয়ে সব পেয়ার প্রিন্ট করা C++-তে