Problem 11. A1=?
题目简述:
有如下方程:Ai = (Ai-1 + Ai+1)/2 - Ci (i = 1, 2, 3, .... n).若给出A0, An+1, 和 C1, C2, .....Cn.
请编程计算A1 = ?并保留两位小数
解题思路:
根据方程:Ai=(Ai-1+Ai+1)/2-Ci
可以写出:A1=1/2*A0+1/2*A2-C1; 1式
A2=1/2*A1+1/2*A3-C2; 2式
将1式代入2式,得到:
A2=1/3*A0+2/3*A3-2/3*C1-4/3*C2;
将3式代入1式,得到:
A1=2/3*A0+1/3*A3-4/3*C1-2/3*C2.
...以此类推
可以得到一个通式:对于An+1。
A1=n/(n+1)*A0+1/(n+1)*An+1-2*n/(n+1)*C1-(2*n-2)/ (n+1) 1*C2- ...2/(n+1)*Cn-1
细节处理:
保留两位小数C++中应用cout<<fixed<<setprecision(2)<<a[1]<<endl;使用时还需加上一个头文件#include<iomanip>
源代码:
#include<iostream>
#include<iomanip>
using namespace std;
double a[3010],c[3010];
int main()
{
int n,sum;
while(cin>>n)
{
sum=0;
cin>>a[0];
cin>>a[n+1];
for(int i=1;i<=n;i++)
{
cin>>c[i];
sum+=(n+1-i)*c[i];
}
a[1]=(n*a[0]+a[n+1]-2*sum)/(n+1);
cout<<fixed<<setprecision(2)<<a[1]<<endl;
}
return 0;
}