Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Tổng chuỗi cấp số nhân: K^n + K^(n-1)(K-1) + ... + (K-1)^n trong C++

Tính tổng S = Σi=0..n Kn-i (K-1)i.

Phân tích

Đây là cấp số nhân với:

  • Số hạng đầu: a = Kn
  • Công bội: r = (K-1)/K
  • Số hạng: n+1

Áp dụng công thức tổng cấp số nhân:

S = a(1 - rn+1) / (1 - r) = Kn * (1 - ((K-1)/K)n+1) / (1/K) = Kn+1 - (K-1)n+1

Ví dụ

n=3, K=4: 4³ + 4²·3 + 4·3² + 3³ = 64+48+36+27 = 175

Công thức: 4⁴ - 3⁴ = 256 - 81 = 175 ✓

Code C++

#include <iostream>
#include <cmath>
using namespace std;

long long seriesSum(int k, int n) {
    // S = k^(n+1) - (k-1)^(n+1)
    return (long long)pow(k, n+1) - (long long)pow(k-1, n+1);
}

int main() {
    cout << seriesSum(2, 4) << endl; // 31 (2^5 - 1^5 = 32-1)
    cout << seriesSum(4, 3) << endl; // 175
    return 0;
}

Kết quả

31
175

Lưu ý: Dùng pow double có thể sai số với số lớn. Nên dùng lũy thừa nhị phân (integer) cho chính xác.