Computer >> Máy Tính >  >> Lập trình >> C ++

Tìm tổng của Chuỗi có số hạng thứ n là n ^ 2 - (n-1) ^ 2 trong C ++

Trong bài toán này, chúng ta được cho một giá trị nguyên N. Nhiệm vụ của chúng ta là tìm Tổng của Chuỗi n ^ 2 - (n-1) ^ 2 tối đa n số hạng .

Hãy lấy một ví dụ để hiểu vấn đề,

Input : N = 3
Output : 6

Giải thích -

[12 - (0)2] + [22 - (1)2] + [32 - (2)2] = 1 - 0 + 4 - 1 + 9 - 2 = 9

Phương pháp tiếp cận giải pháp

Một cách tiếp cận đơn giản để giải quyết vấn đề là tìm số hạng chung của chuỗi và sau đó tìm tổng cho đến n số hạng. Và tính tổng bằng công thức sẽ giảm thời gian xuống còn O (1). Ngoài ra, kết quả có thể rất lớn nên cần phải tìm ra mô đun của các giá trị.

Hãy suy ra công thức cho số hạng thứ n của chuỗi,

$ T_ {n} \:=\:\ mathrm {n ^ 2- (n-1) ^ 2} $

Về việc giải bằng cách sử dụng công thức a2 - b2,

$ T_ {n} \:=\:\ mathrm {(n + n-1) * (n-n + 1)} $

$ =\:\ mathrm {(2 * n-1) * (1)} $

$ =\:\ mathrm {2 * n-1} $

Sử dụng điều này, chúng ta có thể tìm thấy tổng cho đến n số hạng của chuỗi,

$ \ mathrm {sum} \:=\:\ sum (2 * n-1) $

$ \ mathrm {sum} \:=\:2 * \ sum {n} \:- \:\ sum {1} $

$ \ mathrm {sum} \:=\:2 * (n * (n + 1)) / 2-n $

$ \ mathrm {sum} \:=\:n * (n + 1) -n \:=\:n ^ 2 \:+ \:n \:- \:n \:=\:n ^ 2 $

Tổng của chuỗi là n 2 là một con số lớn, vì vậy mod sẽ được thực hiện.

Ví dụ

Chương trình minh họa hoạt động của giải pháp của chúng tôi

#include<iostream>
using namespace std;
#define mod 1000000007
long long calcSumNTerms(long long n) {
   return ((n%mod)*(n%mod))%mod;
}
int main() {
   long long n = 4325353;
   cout<<"The sum of series upto n terms is "<<calcSumNTerms(n); return 0; 
}

Đầu ra

The sum of series upto n terms is 678443653