C/C++ 程序求第 n 项为 n^2 – (n-1)^2 的级数之和

cc++server side programmingprogramming

数学中有许多类型的级数,可以用 C 编程轻松解决。此程序用于在 C 程序中求出下列级数之和。

Tn = n2 - (n-1)2

求出级数所有项之和,即 Sn mod (109 + 7),

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

输入:229137999
输出:218194447

解释

Tn 可以表示为 2n-1,得到它

众所周知,

=> Tn = n2 - (n-1)2
=>Tn = n2 - (1 + n2 - 2n)
=>Tn = n2 - 1 - n2 + 2n
=>Tn = 2n - 1.
求 ∑Tn.
∑Tn = ∑(2n – 1)
将上述等式简化为,
=>∑(2n – 1) = 2*∑n – ∑1
=>∑(2n – 1) = 2*∑n – n.
其中,∑n 是前 n 个自然数之和。
已知 n 个自然数的和 ∑n = n(n+1)/2。
现在等式为,
∑Tn = (2*(n)*(n+1)/2)-n = n2
n2 的值可以很大。不用 n2 并对结果取模。
因此,使用模乘性质计算 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;
}

相关文章