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

หาผลรวม Series 1² - 2² + 3² - 4² + ... จน N พจน์ใน C++

ในปัญหานี้ เราได้รับ N งานคือหาผลรวม Series: 1² - 2² + 3² - 4² + ... จน N พจน์

ตัวอย่าง

Input: N = 3 Output: 6

1² - 2² + 3² = 1 - 4 + 9 = 6

วิธีที่ 1: Loop แบบตรง O(N)

int findSum(int n) {
    int sum = 0;
    for (int i = 1; i <= n; i++) {
        if (i % 2) sum += i * i;
        else sum -= i * i;
    }
    return sum;
}

วิธีที่ 2: สูตรปิด O(1) (แนะนำ)

ใช้ a² - b² = (a-b)(a+b):

  • N คู่: Sum = -(1+2+...+N) = -N(N+1)/2
  • N คี่: Sum = -N(N+1)/2 + N² = N(N+1)/2

สรุป: N คู่ → -N(N+1)/2, N คี่ → N(N+1)/2

ตัวอย่างโค้ด (วิธีที่ 2)

#include <iostream>
using namespace std;

int findSumOfSeries(int n) {
    if (n % 2 == 0) return -n * (n + 1) / 2;
    return n * (n + 1) / 2;
}

int main() {
    cout << findSumOfSeries(5); // 15
    return 0;
}

ผลลัพธ์

15

(1 - 4 + 9 - 16 + 25 = 15)