根据递推公式可以推出an的计算公式, 可以用数学归纳法证明,这里从略了:
下面是代码:
#include <stdio.h>
double c[3005];
char buffer[200];
void func(int n, double a0, double an1)
{
int i;
double sum;
double x;
sum = 0.0;
x = 2.0;
for(i=n; i>=1; i--)
{
sum += x*c[i];
x += 2.0;
}
printf("%.2lf\n", (an1-sum+n*a0)/(n+1));
}
int main(void)
{
int N, n, i, j;
double a0, an1;
gets(buffer);
sscanf(buffer, "%d", &N);
for(j=1; j<=N; j++)
{
gets(buffer);
gets(buffer);
sscanf(buffer, "%d", &n);
gets(buffer);
sscanf(buffer, "%lf", &a0);
gets(buffer);
sscanf(buffer, "%lf", &an1);
for(i=1; i<=n; i++)
{
gets(buffer);
sscanf(buffer, "%lf", c+i);
}
if(j >= 2)
printf("\n");
func(n, a0, an1);
}
return 0;
}