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

C++-এ সিরিজ 2⁰ + 2¹ + 2² +...+ 2ⁿ এর যোগফল


এই সমস্যায়, আমাদের একটি সংখ্যা n দেওয়া আছে যা সিরিজ 2⁰, 2¹, 2², …, 2ⁿ-এর n-তম টার্ম নির্ধারণ করে। আমাদের কাজ হল সিরিজ 2⁰ + 2¹ + 2² +...+ 2ⁿ-এর যোগফল নির্ণয় করার জন্য একটি প্রোগ্রাম তৈরি করা।

উদাহরণ দিয়ে বোঝা যাক

ইনপুট

n=6

আউটপুট

ব্যাখ্যা

যোগফল = 2⁰ + 2¹ + 2² + 2³ + 2⁴ + 2⁵ + 2⁶
যোগফল = 1 + 2 + 4 + 8 + 16 + 32 + 64 = ১২৭

এই সমস্যা সমাধানের একটি সহজ পদ্ধতি হল লুপ ব্যবহার করা। 0 থেকে n পর্যন্ত প্রতিটি মান জন্য 2ⁱ বের করে যোগফল ভেরিয়েবলে যোগ করা।

আলগরিদম

যোগফল = 0 আরম্ভ করুন
ধাপ ১: i = 0 থেকে n পর্যন্ত ইটারেট করুন। এবং অনুসরণ করুন:
    ধাপ ১.১: যোগফল আপডেট করুন, sum += 2ⁱ।
ধাপ ২: যোগফল প্রিন্ট করুন।

C++ প্রোগ্রাম উদাহরণ (লুপ পদ্ধতি)

#include <iostream>
#include <math.h>
using namespace std;

int calcSeriesSum(int n) {
    int sum = 0;
    for (int i = 0; i <= n; i++)
        sum += pow(2, i);
    return sum;
}

int main() {
    int n = 11;
    cout<<"Sum of the series 2^0 + 2^1 + 2^2 +...+ 2^"<<n<<" is "<<calcSeriesSum(n);
    return 0;
}

আউটপুট

Sum of the series 2^0 + 2^1 + 2^2 +...+ 2^11 is 4095

এটি সবচেয়ে কার্যকর পদ্ধতি নয় কারণ লুপ ব্যবহার করার কারণে এর টাইম কমপ্লেক্সিটি O(n)।

দক্ষ সমাধান: গাণিতিক ফর্মুলা

একটি অধিক দক্ষ সমাধান হল যোগফলের গাণিতিক ফর্মুলা ব্যবহার করা। তা হলো -

2^(n+1) - 1

C++ প্রোগ্রাম উদাহরণ (ফর্মুলা পদ্ধতি)

#include <iostream>
#include <math.h>
using namespace std;

int calcSeriesSum(int n) {
    return ( (pow(2, (n+1)) - 1) );
}

int main() {
    int n = 11;
    cout<<"Sum of the series 2^0 + 2^1 + 2^2 +...+ 2^"<<n<<" is "<<calcSeriesSum(n);
    return 0;
}

আউটপুট

Sum of the series 2^0 + 2^1 + 2^2 +...+ 2^11 is 4095
  1. C++-এ সিরিজ যোগফল: 1 + 2+2 + 3+3+3 + ... + n

  2. C++-এ arr[i]*i এর যোগফল সর্বাধিক করা

  3. C++ প্রোগ্রাম: সিরিজ 1 + 1/2² + 1/3³ + … + 1/nⁿ-এর যোগফল বের করা

  4. C++ প্রোগ্রাম: সমান্তরাল শ্রেণির যোগফল