对于一个含有 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=2Ai−1+Ai+1−Ci 1≤i≤n
现在我们知道 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(1≤n≤1000)。
第二行输入两个数 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=(Ai+1-sum_c-A0)/n+1+A0; (sum_c)表示所有求和c的和;
代码如下:
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin>>n;
double a0,an_1,sum[100000],c[100000];
fill(sum,sum+n,0.0);
fill(c,c+n,0.0);
cin>>a0>>an_1;
for(int i=1;i<=n;i++)
{
cin>>c[i];
sum[i]=sum[i-1]+c[i];
}
double s1=0.0,d1=0.0;
for(int i=1;i<=n;i++)
{
d1+=(2*sum[i]);
}
s1=(an_1-a0-d1)/n+1;
printf("%.2f\n",s1+a0);
return 0;
}