递归式移项得Ai+1 = 2Ai + 2Ci - Ai-1;
1.A2 = 2A1 + 2C1 - A0;
2.A3 = 2A2 + 2C2 - A1;
.
.
.
n.An+1 = 2An + 2Cn - An-1;
如此的1式带入2式,之后的2式带入3式,直到n式被更新为An+1 = n+1A1 + (2nC1 + 2(n-1)C2 + ... + 2Cn - nA0,只剩下A1未知了。
代码:
#include <cstdio> #include <cstdlib> #include <cstring> #include <iostream> #include <algorithm> #include <iomanip> using namespace std; int n; double c,a0,an1,sum; int main() { cin>>n; cin>>a0>>an1; sum += n * a0 + an1; for(int i = 0;i < n;i ++) { cin>>c; sum -= (n - i) * c * 2; } sum /= n + 1; printf("%.2f",sum); }