C ++
 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 です。 これは多数なので、modが使用されます。

ソリューションの動作を説明するプログラム

#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

  1. n番目の項がn^2 –(n-1)^2である級数の合計を求めるJavaプログラム

    そのようなシリーズの合計を見つけるために、Javaプログラムは次のようになります- 例 public class Demo {    static long my_val = 1000000007;    public static long compute_val(long my_int){       return ((my_int % my_val) * (my_int % my_val)) % my_val;    }    public static void main(St

  2. n番目の項がn^2 –(n-1)^2である級数の合計を見つけるためのPythonプログラム

    この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 整数入力nが与えられ、すべてのn項を合計する必要があります。ここで、一連のn番目の項は次のように表されます- Tn = n2 - (n-1)2 より多くの時間計算量を含むnの二乗muktiolicaionを含む合計を計算するための直接式があります。これを減らすために、ここではモジュラー乗算アプローチを使用します それでは、実装を見てみましょう- 例 # Python program to find sum of given # series. mod = 1000000007 def findSum(n)