对于一个含有 n+2 个元素的数列,A0,A1,⋯An,满足这样的递归公式
Ai=2Ai−1+Ai+1−Ci 1≤i≤n
现在我们知道 A0,An+1 和 C1,C2,⋯Cn。
现在请你帮忙计算 A1 的值。
输入格式
第一行输入一个整数 n(1≤n≤1000)。
第二行输入两个数 A0 和 An+1,接着是 n 个数据分别是 C1,C2,⋯Cn。所有的数据均是两位小数的浮点数。
输出格式
输出 A1 的值,结果保留两位小数。
样例输入1
1 50.50 25.50 10.15
样例输出1
27.85
样例输入2
2 -756.89 52.52 172.22 67.17
样例输出2
-761.49
A2=2*A1-A0;
A3=2*A2-A1=3A1-2*A0;
A4=2*A3-A2=4*A1-3*A0;
可以看出A(n+1)中有n+1个A1。我们可以先将A1当成0,用递推推出A(n+1)。再用给出的A(n+1)的值减去推出的A(n+1)的值,就可以得到n+1个A1的值。
代码:
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
double a[1005];
int main()
{
int n;
double an1,c;
scanf("%d",&n);
scanf("%lf%lf",&a[0],&an1);
a[1]=0;
for(int i=2;i<=n+1;i++)
{
scanf("%lf",&c);
a[i]=2*a[i-1]-a[i-2]+2*c;
}
printf("%.2f\n",(an1-a[n+1])/(n+1));
return 0;
}