用C/C++程式計算n項之和,第n項為 n^2 – (n-1)^2
數學中有許多型別的數列,可以使用C程式設計輕鬆求解。此程式旨在用C程式求出其中一種數列的和。
Tn = n2 - (n-1)2
求解如 Sn mod (10^9 + 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 ∑Tn. ∑Tn = ∑(2n – 1) Reduce the above equation to, =>∑(2n – 1) = 2*∑n – ∑1 =>∑(2n – 1) = 2*∑n – n. here, ∑n is the sum of first n natural numbers. As known the sum of n natural number ∑n = n(n+1)/2. Now the equation is, ∑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; }
廣告