ภาพรวมปัญหา
หาผลรวมลำดับ: (1×2×...×k) + (2×3×...×(k+1)) + ... + ((n-k+1)×...×n)
ตัวอย่าง
n = 4, k = 3 → (1×2×3) + (2×3×4) = 6 + 24 = 30
วิธีแก้ปัญหา 1: Nested Loop (O(N×K))
for (int i = 1; i <= n-k+1; i++) {
term = 1;
for (int j = i; j < k+i; j++) term *= j;
sum += term;
}
วิธีแก้ปัญหา 2: สูตรปิด (O(K))
ผลรวม = (n+1)! / (n-k)! / (k+1) = (n+1)×n×...×(n-k+1) / (k+1)
โค้ด C++ (สูตรปิด)
#include <iostream>
using namespace std;
int findSeriesSum(int n, int k) {
int sumVal = 1;
for (int i = n+1; i > n-k; i--) sumVal *= i;
sumVal /= (k + 1);
return sumVal;
}
int main() {
int n = 4, k = 3;
cout << "The sum of series is " << findSeriesSum(n, k);
return 0;
}
ผลลัพธ์
30