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

Tổng dãy 1 + 22 + 333 + 4444 + ... đến n số hạng C++


Cho số nguyên N. Nhiệm vụ: tính tổng dãy 1 + 22 + 333 + 4444 + ... đến n số hạng.

Ví dụ minh họa

Input: N = 4 Output: 4800

1 + 22 + 333 + 4444 = 4800

Phương pháp giải

Số hạng thứ i là i lặp i lần = i × (10ⁱ - 1)/9. Tổng = 1/9 Σ[i×10ⁱ - i] = 1/9[Σ(i×10ⁱ) - n(n+1)/2]. Σ(i×10ⁱ) = [n×10ⁿ⁺² - (n+1)×10ⁿ⁺¹ + 10]/81. Công thức cuối: Sum = [10ⁿ⁺¹(18n-2) - 81n² - 81n + 20] / 1458

Ví dụ chương trình

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

long long calcSumNTerms(int n) {
    return ((18LL * n - 2) * (long long)pow(10, n + 1) - 81LL * n * n - 81LL * n + 20) / 1458;
}

int main() {
    int n = 5;
    cout << "Tổng dãy đến " << n << " số hạng: " << calcSumNTerms(n);
    return 0;
}

Kết quả

Tổng dãy đến 5 số hạng: 60355