如果序列的第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