ในปัญหานี้ เราได้รับ 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)