Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

ผลรวมลำดับที่กำหนดใน C++ (Given Sequence Sum)

ภาพรวมปัญหา

หาผลรวมลำดับ: (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