题目描述:有一个公式,Ai = (Ai-1 + Ai+1)/2 - Ci (i = 1, 2, 3, .... n).,如果给出A0, An+1, 和 C1, C2, .....Cn要你计算出A1是多少。
解题报告:一个简单的数学题,我的做法先将公式变形得到:A[n] = 2*A[n-1]+2*C[n-1]-A[n-2],是分别定义两个数组,设A1 = x,然后两个数组里面一个存放第n项的系数,另一个存放第n项的常数,这样一直递推到第n+1项,然后直接解一元一次方程就可以了。代码附上:

1 #include<cstdio> 2 #include<cmath> 3 const int MAX = 3000+5; 4 int n; 5 double xishu[MAX],changshu[MAX],C[MAX],a0,an1; 6 void dabiao() { 7 xishu[1] = 1; 8 changshu[1] = 0; 9 xishu[2] = 2; 10 changshu[2] = 2.0*C[1]-a0; 11 for(int i = 3;i<=n+1;++i) { 12 xishu[i] = 2.0*xishu[i-1]-xishu[i-2]; 13 changshu[i] = 2.0*changshu[i-1]+2*C[i-1]-changshu[i-2]; 14 } 15 } 16 int main() { 17 while(scanf("%d",&n)!=EOF) { 18 scanf("%lf%lf",&a0,&an1); 19 for(int i = 1;i<=n;++i) 20 scanf("%lf",&C[i]); 21 dabiao(); 22 double ans = (an1-changshu[n+1])/xishu[n+1]; 23 printf("%.2lf ",ans); 24 } 25 return 0; 26 }