이 문제에서는 정수 값 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