POJ 2601 Simple calculations

68 阅读1分钟

题意:

给定式子让你求a1.

规律:先将这些累加

2a1 = a0 + a2 - 2c1

2a2 = a1 + a3 - 2c2

2a3 = a2 + a4 - 2c3

…… …… ……

2an = an-1 + an+1 - 2cn,

通过每次的累加,我们已经得到了下面一堆式子:

2a1 = a0 + a2 - 2c1

a1 + a2 = a0 + a3 - 2(c1 + c2)

a1 + a3 = a0 + a4 - 2(c1 + c2 + c3)

…… …… …… ……

a1 + an = a0 + an+1 - 2(c1 + c2 + c3 + …… + cn)

再次把得到的这些式子累加一次得:

(n + 1)a1 = na0 + an+1 - 2(nc1 + (n-1)c2 + (n-2)c3 + …… + cn)。

这样就可以算出a1.

#include<iostream>
using namespace std;
int main()
{
	double c[3500],te,a0,ae;
	int T,n;
	scanf("%d",&T);
	while(T--){
		double sum=0;
		scanf("%d%lf%lf",&n,&a0,&ae);
		for(int i=0;i<n;i++){
			scanf("%lf",&te);
			sum+=(n-i)*te;
		}
		sum=sum*2;
		printf("%.2lf\n",(ae+a0*n-sum)/(n+1));
		if(T) printf("\n");
	}
	return 0;
}


\

\

\