ในปัญหานี้ เราได้รับค่าจำนวนเต็ม N งานของเราคือ หาผลรวมของชุดที่ 1 - 2 + 3 - 4 + 5 - 6 + 7 ไม่เกิน n เงื่อนไข .
ซีรี่ย์คือ 1 - 2 + 3 - 4 + 5 - 6 + 7 - 8 + 9 - 10...
มาดูตัวอย่างเพื่อทำความเข้าใจปัญหากัน
Input : N = 4 Output : -2
คำอธิบาย −
1 - 2 + 3 - 4 = -2
แนวทางการแก้ปัญหา
วิธีง่ายๆ ในการแก้ปัญหาคือการหาเทอมทั่วไปของอนุกรมแล้วหาผลรวมจนถึง n เทอม และการคำนวณหาผลรวมโดยใช้สูตรจะลดเวลาลงเหลือ O(1)
ซีรีส์คือ
1 - 2 + 3 - 4 + 5 - 6 + 7 - 8 + 9 - 10...
หาผลรวมของอนุกรมสำหรับค่าบางค่ากัน
ผลรวม(1) =1
ผลรวม(2) =1 - 2 =-1
ผลรวม(3) =1 - 2 + 3 =2
ผลรวม(4) =1 - 2 + 3 - 4 =-2
ผลรวม(5) =1 - 2 + 3 - 4 + 5 =3
ผลรวม(6) =1 - 2 + 3 - 4 + 5 - 6 =-3
ผลรวม(7) =1 - 2 + 3 - 4 + 5 - 6 + 7 =4
ผลรวม(8) =1 - 2 + 3 - 4 + 5 - 6 + 7 - 8 =-4
สำหรับที่นี่ เราสามารถสรุปได้ว่าผลรวมสามารถกำหนดเป็น
ผลรวม =+(n+1)/2 ถ้า n เป็นเลขคี่
ผลรวม =-(n)/2 ถ้า n เป็นคู่
ตัวอย่าง
โปรแกรมเพื่อแสดงการทำงานของโซลูชันของเรา
#include<iostream> using namespace std; int calcSumNTerms(int n) { if(n%2 == 0) return ((-1)*(n/2)); return ((n+1)/2); } int main() { int n = 156; cout<<"The sum of series upto n terms is "<<calcSumNTerms(n); return 0; }
ผลลัพธ์
The sum of series upto n terms is -78