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

C++-এ ত্রিভুজাকার সংখ্যা সিরিজ 1, 3, 6, 10… এর যোগফল


এই সমস্যায়, আমাদের একটি সংখ্যা n দেওয়া আছে যা সিরিজ 1, 3, 6, 10 … (ত্রিভুজাকার সংখ্যা) এর nটি উপাদান নির্দেশ করে। আমাদের কাজ হল সিরিজের যোগফল ক্যালকুলেট করার একটি প্রোগ্রাম তৈরি করা।

যোগফল বের করার আগে ত্রিভুজাকার সংখ্যা সম্পর্কে জানা যাক।

ত্রিভুজাকার সংখ্যা হল এমন সংখ্যাগুলো যেগুলো ত্রিভুজ আকারে রিপ্রেজেন্ট করা যায়।

একটি ত্রিভুজ এমনভাবে তৈরি হয় যে প্রথম সারিতে এক পয়েন্ট, দ্বিতীয় সারিতে দুটি, এবং এভাবে চলে।

উদাহরণ

C++-এ ত্রিভুজাকার সংখ্যা সিরিজ 1, 3, 6, 10… এর যোগফল

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

ইনপুট

n = 4

আউটপুট

ব্যাখ্যা - যোগফল = T₁ + T₂ + T₃ + T₄ = 1 + 3 + 6 + 10 = ২০

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

আলগরিদম

যোগফল = ০ আরম্ভ করুন।
ধাপ ১: i = 0 থেকে n পর্যন্ত লুপ। এবং ধাপ ২ ও ৩ অনুসরণ করুন
ধাপ ২: i-এর প্রতিটি মানের জন্য, ফর্মুলা দিয়ে ত্রিভুজাকার সংখ্যা বের করুন, t[i] = Σ i = i*(i+1)/2।
ধাপ ৩: যোগফল আপডেট করুন, sum += t[i]।
ধাপ ৪: যোগফল ফেরত দিন।

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

#include <iostream>
using namespace std;

int calcSeriesSum(int n) {
    int sum = 0;
    for (int i=1; i<=n; i++)
        sum += i*(i+1)/2;
    return sum;
}

int main() {
    int n = 6;
    cout<<"Sum of the series 1, 3, 6, 10 ... (Triangular Numbers) is "<<calcSeriesSum(n);
    return 0;
}

আউটপুট

Sum of the series 1, 3, 6, 10 ... (Triangular Numbers) is 56

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

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

যদি Tᵢ i-তম ত্রিভুজাকার সংখ্যা হয়। তবে,

T₁ = 1

T₂ = 3

T₃ = 6

Tₙ = n*(n+1) / 2

সকল ত্রিভুজাকার সংখ্যার যোগফল হল:

যোগফল = 1 + 3 + 6 + 10 + …
যোগফল = T₁ + T₂ + T₃ + … + Tₙ
যোগফল = Σ (Tᵢ), i → 0 to n
যোগফল = Σ n(n+1)/2
যোগফল = ½ Σ n² + Σ n
যোগফল = ½ [ (n(n+1)(2n+1)/6) + (n(n+1)/2) ]
যোগফল = ½ (n(n+1)/2) * [ (2n+1)/3 + 1 ]
যোগফল = ¼ [n(n+1)] * [(2n+4)/3]
যোগফল = ¼ [n(n+1)] * [2(n+2)/3]
যোগফল = ⅙ [n(n+1)(n+2)]

এই হলো ত্রিভুজাকার সংখ্যাগুলোর যোগফলের সাধারণ ফর্মুলা।

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

#include <iostream>
using namespace std;

int calcSeriesSum(int n) {
    return ( ( n*(n + 1)*(n + 2) )/6);
}

int main() {
    int n = 6;
    cout<<"Sum of the series 1, 3, 6, 10 ... (Triangular Numbers) is "<<calcSeriesSum(n);
    return 0;
}

আউটপুট

Sum of the series 1, 3, 6, 10 ... (Triangular Numbers) is 56
  1. C++-এ arr[i]*i এর যোগফল সর্বাধিক করা

  2. প্রথম nটি প্রাকৃতিক সংখ্যার যোগফলের যোগফল নির্ণয় করা C++-এ

  3. C++-এ অল্টারনেট ফিবোনাচ্চি নম্বর (বিকল্প ফিবোনাচ্চি সিরিজ)

  4. C++ প্রোগ্রাম: সংখ্যা ২টি ট্রায়্যাঙ্গুলার নাম্বারের যোগফল কিনা চেক