您的位置:首页 > 其它

2018—蓝桥杯B组模拟赛—数列求值

2018-03-29 15:33 801 查看




样例输入1

150.50 25.5010.15

样例输出1

27.85

样例输入2

2-756.89 52.52172.22 67.17

样例输出2

-761.49思路:
通过递推公式吧前三项写出来就能明显的发现规律
A1 = (A0+A2)/2-C1
A2 = (A1+A3)/2-C2 ------>3A2 = A0 - 2(C1+2C2)+2A3
A3 = (A2+A4)/2-C3------->4A3 = A0 - 2(C1+2C2+3C3)+3A4
由此可以判断:(n+1)An = A0 - 2F(n) + nAn+1 (F(n) = C1+2C2+3C3+.....+nCn)
代码:

#include<bits/stdc++.h>

using namespace std;
const int maxn = 1050;

int n;
double a[maxn], c[maxn];

double fun(int n)
{
if(n == 1) 
   return c[1];
return fun(n-1) + n * c
;
}

void fun2(int n)
{
for(int i = n;i >= 1;i--)
{
a[i] = (a[0] - 2*fun(i) + i*a[i+1])/(i+1);
}
return;
}

int main()
{
while(cin >> n)
{
scanf("%lf%lf", &a[0], &a[n+1]);
for(int i = 1;i <= n;i++)
{
scanf("%lf", &c[i]);
}
fun2(n);
printf("%.2lf\n", a[1]);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: