如果序列的第n 项由 Tn=an 3 +bn 2 +cn+d 给出,其中 a、b、c、d 是常数,则 n 项之和。
Sn = a*Σ(n3)+b*Σ(n2)+c*Σ(n)+Σ(d)
其中 Σ 表示求和。
证明 :
让我们找到一些这个系列。所以,
Sn = T1+T2+T3+T4+ ... +Tn
T1 = a(1)3+b(1)2+c(1)+d
T2 = a(2)3+b(2)2+c(2)+d
T3 = a(3)3+b(3)2+c(3)+d
...
...
Tn = a(n)3+b(n)3+c(n)+d
添加这些所有条款,
Sn
= T1+T2+T3+ ... +Tn
= a((1)3+(2)3+(3)3+ ...
+(n)3)+b((1)2+(2)2+(3)2+ ...
+(n)2)+c(1+2+3+ ... +n)+d(1+1+1+ ... +1)
Sn = a*Σ(n3)+b*Σ(n2)+c*Σ(n)+dn
同样,如果我们是格式中任何高阶或低阶项的第 n 项。
Tn = a1np+a2np-1+a3np-2++
... +apn1+ap+1
Sn = a1Σ(np)+a2Σ(np-1)+a3Σ(np-2)+
... +apΣ(n)+nap+1
其中 p, a1, a2, …… 是一些常数。
例子 :
第 n 项给出为,
Tn = n2+n+1
计算 S n
解释 :
Sn = Σ(Tn)
Sn = Σ(n2)+Σ(n)+Σ(1)
Sn = (n(n+1)(2n+1))/6+n(n+1)/2+n
因为,
Σ(n2) = (n(n+1)(2n+1))/6,
Σ(n) = (n(n+1))/2,
Σ(1) = n
因此,如果给定第 n 项,我们可以找到任何序列的总和。当时间复杂度作为 n 的函数给出并且我们必须找到整个算法的时间复杂度时,本文有助于找到方程的时间复杂度。
#include
using namespace std;
int main()
{
int k = 3;
int sum = 0;
// finding sum of n^4 terms
for (int i = 1; i <= k; i++)
sum += (i * i * i * i);
// sum of first k natural numbers is k(k+1)/2.
sum += (k * (k + 1)) / 2;
// we can also use code to calculate it
// for(int i=1;i<=k;i++)
// sum+=i;
// sum of constant term 1 for n times is n
sum += k;
// we can also use code to calculate it.
// for(int i=1;i<=k;i++)
// sum+=1;
cout << sum << endl;
}
输出 :
107
上面给定的代码找到了 3 项的序列总和,其中,
Tn = n4+n+1