求通项公式解决。。。
查看原帖
求通项公式解决。。。
249348
znouc1314楼主2020/12/4 08:47

找规律:[a1、a2、a3...an] 设前n项的和为f(n):f(1)、f(2)、f(3)...f(n)。 则有f(1)=a1; f(2)=a1+a2+(a1+a2) 可以理解为:fn的值等于没有an的子集和(也就是f(n-1))的值加有an的子集和的值。可以把f(n)拆解为:

f(n)=f(n-1)+Sn(sn表示带an的子集和)

我们来看一下Sn如何求:

Sn=(a1+an)+(a2+an)+...(a1+a2+...+an-1+an)

所以,Sn的值等于(a1,a2...an-1)的和加上前n-1项子集数*an.

即Sn=f(n-1)+2^(n-1)*an。

2^(n-1)表示n-1个元素集合的子集数,这个应该是常识。。。 合并整理得: f(n)=2*f(n-1)+2^(n-1)*an 代码如下:

#include<bits/stdc++.h>
#define maxn 50
using namespace std;
int a[maxn];
int main(){
	long long fn=0;
	int n,i=1;
	while(cin>>a[i])
	{
		fn=2*fn+pow(2,i-1)*a[i];
		i++;
	}
	cout<<fn<<endl;
	return 0;
}
2020/12/4 08:47
加载中...