计蒜客数列求值

题目链接:点击打开链接

对于一个含有 n+2n+2 个元素的数列,A_0, A_1, \cdots A_nA0,A1,An,满足这样的递归公式

\displaystyle A_i = \frac{A_{i-1} + A_{i + 1}}{2} - C_i\ \ \ 1 \le i \le nAi=2Ai1+Ai+1Ci   1in

现在我们知道 A_0, A_{n + 1}A0,An+1 和 C_1, C_2, \cdots C_nC1,C2,Cn

现在请你帮忙计算 A_1A1 的值。

输入格式

第一行输入一个整数 n(1 \le n \le 1000)n(1n1000)

第二行输入两个数 A_0A0 和 A_{n+1}An+1,接着是 nn 个数据分别是 C_1,C_2, \cdots C_nC1,C2,Cn。所有的数据均是两位小数的浮点数。

输出格式

输出 A_1A1 的值,结果保留两位小数。

样例输入1

1
50.50 25.50
10.15

样例输出1

27.85

样例输入2

2
-756.89 52.52
172.22 67.17

样例输出2

-761.49

假设a1为x,写出a2,a3,...an+1的表达式发现,an+1里面包含n+1个a1,若把a1当做0,则求出来的an+1与真正的an+1相差了n+1个a1,即可得出a1

#include<stdio.h>
int main()
{
	int n,i;
	double c[1010],a[1010],t;
	scanf("%d",&n);
	scanf("%lf%lf",&a[0],&t);
	for(i=1;i<=n;i++)
	scanf("%lf",&c[i]);
	a[1]=0;
	for(i=2;i<=n+1;i++)
	{
		a[i]=2*(a[i-1]+c[i-1])-a[i-2];
	}
	printf("%.2lf\n",(t-a[n+1])/(n+1));
	return 0;
} 

猜你喜欢

转载自blog.csdn.net/z2664836046/article/details/79445619