您的位置:首页 > 其它

计蒜客-数列求值(数学)

2018-03-29 15:27 691 查看
数列求值

对于一个含有 n+2n+2n+2 个元素的数列,A0,A1,⋯AnA_0, A_1, \cdots A_nA0​,A1​,⋯An​,满足这样的递归公式Ai=Ai−1+Ai+12−Ci   1≤i≤n\displaystyle A_i = \frac
4000
{A_{i-1} + A_{i + 1}}{2} - C_i\ \ \ 1 \le i \le nAi​=2Ai−1​+Ai+1​​−Ci​   1≤i≤n
现在我们知道 A0,An+1A_0, A_{n + 1}A0​,An+1​ 和 C1,C2,⋯CnC_1, C_2, \cdots C_nC1​,C2​,⋯Cn​。
现在请你帮忙计算 A1A_1A1​ 的值。

输入格式

第一行输入一个整数 n(1≤n≤1000)n(1 \le n \le 1000)n(1≤n≤1000)。
第二行输入两个数 A0A_0A0​ 和 An+1A_{n+1}An+1​,接着是 nnn 个数据分别是 C1,C2,⋯CnC_1,C_2, \cdots C_nC1​,C2​,⋯Cn​。所有的数据均是两位小数的浮点数。

输出格式

输出 A1A_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
把公式化简可得Ai+1 = 2(Ai+Ci)-Ai-1
A2 = 2(A1+C1)-A0 = 2A1+x2;
A3 = 2(A2+C2)-A1 = 3A1+x3
A4 = 2(A3+C3)-A2 = 4A1+x4
An+1 = 2(A3+C3) - An-1 = (n+1)A1 + Xn+1
所以算出Xn+1就可以算出A1,那么我们观察x之间又怎样的递推关系
看A4那个式子,x4等于什么,2A3里面一定包含了2x3然后+2C3,-A2中一定会-x2
所以我么发现Xi+1 = 2*Xi + 2Ci - Xi-1
code:#include <iostream>
#include <cstdio>
using namespace std;
double x[1010];
double c[1010];
int main(){
int n;
cin >> n;
double sum = 0,A0,An1;
cin >> A0 >> An1;
x[0] = A0;
x[1] = 0;
for(int i = 1; i <= n; i++){
cin >> c[i];
x[i+1] = 2.0 * x[i] - x[i-1] + 2.0 * c[i];
}
double ans = (An1 - x[n+1]) / (n + 1);
printf("%.2f\n",ans);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: