সমস্যা
সিরিজ: K^n + K^(n-1)*(K-1)^1 + K^(n-2)*(K-1)^2 + ... + (K-1)^n। যোগফল বের করুন।
পদ্ধতি ১: লুপ (O(n))
int calcSeriesSum(int k, int n) {
int sum = 0;
for (int i=0; i<=n; i++)
sum += pow(k, n-i) * pow(k-1, i);
return sum;
}
পদ্ধতি ২: জ্যামিতিক সিরিজ ফর্মুলা (O(1) পাওয়ার সহ)
সিরিজটি জ্যামিতিক প্রগ্রেশন (GP) রূপে লেখা যায়:
প্রথম পদ a = K^n, সাধারণ অনুপাত r = (K-1)/K, পদ সংখ্যা n+1।
যোগফল S = a * (1 - r^(n+1)) / (1 - r)
সরলীকরণ করলে: S = K^(n+1) - (K-1)^(n+1)
C++ কোড (ইফিশিয়েন্ট)
#include <iostream>
#include <cmath>
using namespace std;
int calcSeriesSum(int k, int n) {
return pow(k, n+1) - pow(k-1, n+1);
}
int main() {
int n = 4, K = 2;
cout << "Sum: " << calcSeriesSum(K, n); // 31
}
আউটপুট
Sum of the series is 31
নোট
pow() ফ্লোটিং পয়েন্ট রিটার্ন করে, বড় ইন্টিজারের জন্য প্রিসিশন সমস্যা হতে পারে। বড় ইনপুটের জন্য বাইনারি এক্সপোনেনশিয়েশন বা বিগ ইন্টিজার লাইব্রেরি ব্যবহার করা উচিত।