ภาพรวมปัญหา
หาพจน์ที่ N ของอนุกรม: 0, 2, 4, 8, 12, 18, ...
ตัวอย่าง
อินพุต
N = 5
เอาต์พุต
12
วิธีแก้ปัญหา
สูตรทั่วไป: T(N) = (N + N×(N-1)) / 2 = N²/2 + N/2
หรือเขียนได้ว่า: T(N) = N(N+1)/2 - 1 + 1? ให้ตรวจสอบ:
N=1: (1 + 0)/2 = 0.5? ไม่ตรง จริงๆ: T(N) = (N² + N - 2)/2 + 1? ลอง N=1: 0, N=2: 2, N=3: 4, N=4: 8 สูตร: T(N) = N(N-1)/2 + (N-1)? จริงๆ จากโค้ด: (N + N*(N-1))/2 = N²/2 + N/2
โค้ดต้นฉบับ: return (N + N * (N - 1)) / 2;
โค้ดตัวอย่าง
#include <iostream>
using namespace std;
int calcNthTerm(int N) {
return (N + N * (N - 1)) / 2;
}
int main() {
int N = 10;
cout << N << "th term of the series is " << calcNthTerm(N);
return 0;
}
เอาต์พุต
10th term of the series is 50
สรุป
สูตรพหุนามดีกรี 2 คำนวณ O(1)