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

หาผลรวม Series 1 + 22 + 333 + 4444 + ... จน N พจน์ใน C++

ในปัญหานี้ เราได้รับ N งานคือหาผลรวม Series: 1 + 22 + 333 + 4444 + ... จน N พจน์

ตัวอย่าง

Input: N = 4 Output: 4800

1 + 22 + 333 + 4444 = 4800

การ導出สูตร (Mathematical Derivation)

พจน์ที่ k = k × (111...1 k ตัว) = k × (10ᵏ - 1)/9

Sum = Σ[k×(10ᵏ-1)/9] = 1/9 × [Σ(k×10ᵏ) - Σ(k)]

หลังจัดรูปได้สูตรปิด:

Sum = [10^(N+1) × (18N - 2) - 81N² - 81N + 20] / 1458

ตัวอย่างโค้ด

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

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

int main() {
    cout << calcSumNTerms(5); // 60355
    return 0;
}

ผลลัพธ์

60355

(1 + 22 + 333 + 4444 + 55555 = 60355)