ホームページ  >  記事  >  バックエンド開発  >  C/C++ プログラム: n の 2 乗から (n-1) の 2 乗を引いた数列の合計を n 番目の項目として計算します。

C/C++ プログラム: n の 2 乗から (n-1) の 2 乗を引いた数列の合計を n 番目の項目として計算します。

WBOY
WBOY転載
2023-08-26 19:21:03849ブラウズ

C/C++ プログラム: n の 2 乗から (n-1) の 2 乗を引いた数列の合計を n 番目の項目として計算します。

数学には、C プログラミングで簡単に解くことができる級数の種類が多数あります。このプログラムは、C プログラムで次の級数の和を求めるものです。

T<sub>n</sub> = n<sup>2</sup> - (n-1)<sup>2</sup>

Sn mod (109 7) として級数のすべての項の和を求め、

Sn = T1 T2 T3 T4 .... .Tn

Input: 229137999
Output: 218194447

説明

Tn は 2n-1 として表すことができます。

ご存知のとおり、

=> Tn = n2 - (n-1)2
=>Tn = n2 - (1 + n2 - 2n)
=>Tn = n2 - 1 - n2 + 2n
=>Tn = 2n - 1.
find &sum;Tn.
&sum;Tn = &sum;(2n &ndash; 1)
Reduce the above equation to,
=>&sum;(2n &ndash; 1) = 2*&sum;n &ndash; &sum;1
=>&sum;(2n &ndash; 1) = 2*&sum;n &ndash; n.
here, &sum;n is the sum of first n natural numbers.
As known the sum of n natural number &sum;n = n(n+1)/2.
Now the equation is,
&sum;Tn = (2*(n)*(n+1)/2)-n = n2
The value of n2 can be large. Instead of using n2 and take the mod of the result.
So, using the property of modular multiplication for calculating n2:
(a*b)%k = ((a%k)*(b%k))%k

の中文翻訳:

#include <iostream>
using namespace std;
#define mod 1000000007
int main() {
   long long n = 229137999;
   cout << ((n%mod)*(n%mod))%mod;
   return 0;
}

以上がC/C++ プログラム: n の 2 乗から (n-1) の 2 乗を引いた数列の合計を n 番目の項目として計算します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はtutorialspoint.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。