题意:

给定式子让你求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;
}