Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++에서 n번째 항이 n^2 - (n-1)^2인 계열의 합 찾기

<시간/>

이 문제에서는 정수 값 N이 제공됩니다. 우리의 임무는 n^2 - (n-1)^2 최대 n항까지의 시리즈 합을 찾는 것입니다. .

문제를 이해하기 위해 예를 들어 보겠습니다.

Input : N = 3
Output : 6

설명 -

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

솔루션 접근 방식

문제를 해결하는 간단한 방법은 급수의 일반항을 찾은 다음 n항까지 합을 찾는 것입니다. 그리고 공식을 사용하여 합계를 계산하면 시간이 O(1)로 단축됩니다. 또한 결과가 클 수 있으므로 값의 계수를 찾아야 합니다.

급수의 n번째 항에 대한 공식을 도출해 봅시다.

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

a2 - b2 공식을 사용하여 풀 때,

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

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

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

이것을 사용하여 급수의 n항까지 합을 구할 수 있습니다.

$\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$

시리즈의 합은 n 2 입니다. 많은 수이므로 모드가 사용됩니다.

예시

솔루션 작동을 설명하는 프로그램

#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; 
}

출력

The sum of series upto n terms is 678443653