2018 蓝桥杯省赛 B 组模拟赛(一)-数列求值
2018-01-22 09:32
295 查看
对于一个含有 n+2n+2 个元素的数列,A_0,
A_1, \cdots A_nA0,A1,⋯An,满足这样的递归公式
\displaystyle
A_i = \frac{A_{i-1} + A_{i + 1}}{2} - C_i\ \ \ 1 \le i \le nAi=2Ai−1+Ai+1−Ci 1≤i≤n
现在我们知道 A_0,
A_{n + 1}A0,An+1 和 C_1,
C_2, \cdots C_nC1,C2,⋯Cn。
现在请你帮忙计算 A_1A1 的值。
第一行输入一个整数 n(1
\le n \le 1000)n(1≤n≤1000)。
第二行输入两个数 A_0A0 和 A_{n+1}An+1,接着是 nn 个数据分别是 C_1,C_2,
\cdots C_nC1,C2,⋯Cn。所有的数据均是两位小数的浮点数。
输出 A_1A1 的值,结果保留两位小数。
-761.49
当时做的时候死活不会做..哎.
这道题我们如果采取递推或者dfs,我们会发现是个无限循环,根本找不到答案。我们需要用比较巧妙的方法。
我们假设要求的值为0.
根据公式X(i+1)=2*X(i)+x*C(i)-X(i-1).
我们一直求到Xn+2上。 我们已知Xn+2的值为B了。 我们假设X1=0的情况下Xn+2的值为C。 所以我们相当于多了C-B。 而这C-B应该是由上述公式减去的,如果x1=0,我们找个例子推一下可知,是少加了n+1个。
所以(C-B)/(n+1)就是答案
#include <iostream>
#include <stdio.h>
using namespace std;
double a[1010];
double val[1010];
int main()
{
int n;
int p,q;
cin >> n;
cin >> p >> q;
a[0]= p;
a[1]= 0;
for (int i= 1; i <= n; ++i)
{
cin >> val[i];
}
for (int i= 1; i <= n; ++i)
{
a[i+1]=2.0*a[i]-a[i-1]+2.0*val[i];
}
double ans= (q- a[n + 1]) /(n + 1);
printf("%.2lf\n",ans);
return 0;
}
A_1, \cdots A_nA0,A1,⋯An,满足这样的递归公式
\displaystyle
A_i = \frac{A_{i-1} + A_{i + 1}}{2} - C_i\ \ \ 1 \le i \le nAi=2Ai−1+Ai+1−Ci 1≤i≤n
现在我们知道 A_0,
A_{n + 1}A0,An+1 和 C_1,
C_2, \cdots C_nC1,C2,⋯Cn。
现在请你帮忙计算 A_1A1 的值。
输入格式
第一行输入一个整数 n(1\le n \le 1000)n(1≤n≤1000)。
第二行输入两个数 A_0A0 和 A_{n+1}An+1,接着是 nn 个数据分别是 C_1,C_2,
\cdots C_nC1,C2,⋯Cn。所有的数据均是两位小数的浮点数。
输出格式
输出 A_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当时做的时候死活不会做..哎.
这道题我们如果采取递推或者dfs,我们会发现是个无限循环,根本找不到答案。我们需要用比较巧妙的方法。
我们假设要求的值为0.
根据公式X(i+1)=2*X(i)+x*C(i)-X(i-1).
我们一直求到Xn+2上。 我们已知Xn+2的值为B了。 我们假设X1=0的情况下Xn+2的值为C。 所以我们相当于多了C-B。 而这C-B应该是由上述公式减去的,如果x1=0,我们找个例子推一下可知,是少加了n+1个。
所以(C-B)/(n+1)就是答案
#include <iostream>
#include <stdio.h>
using namespace std;
double a[1010];
double val[1010];
int main()
{
int n;
int p,q;
cin >> n;
cin >> p >> q;
a[0]= p;
a[1]= 0;
for (int i= 1; i <= n; ++i)
{
cin >> val[i];
}
for (int i= 1; i <= n; ++i)
{
a[i+1]=2.0*a[i]-a[i-1]+2.0*val[i];
}
double ans= (q- a[n + 1]) /(n + 1);
printf("%.2lf\n",ans);
return 0;
}
相关文章推荐
- 2018 蓝桥杯省赛 B 组模拟赛(一)-数列求值
- 2018 蓝桥杯省赛 B 组模拟赛(一)G. 数列求值
- 2018 蓝桥杯省赛 B 组模拟赛(一)G. 数列求值(第一次见这种递推.)
- 2018—蓝桥杯B组模拟赛—数列求值
- 2018蓝桥杯模拟赛--数列求值
- G题 数列求值-Java_2018 蓝桥杯省赛B组模拟赛(一)
- 2018 蓝桥杯省赛 B 组模拟赛(一)
- 2018 蓝桥杯省赛 B 组模拟赛(五)H题
- 【计蒜客】2018 蓝桥杯省赛 B 组模拟赛(一) —— 结果填空:数独 ---- DFS
- 2018 蓝桥杯省赛 B 组模拟赛(五)蒜头君的数轴
- 2018蓝桥杯|基础|数列排序
- 计蒜客 2018 蓝桥杯省赛 B 组模拟赛(一)-C. 结果填空:U型数字
- 2018 蓝桥杯省赛 B 组模拟赛(五)整数划分
- 2018 蓝桥杯省赛 B 组模拟赛(五)J. 程序设计:划分整数
- 2018 蓝桥杯省赛 B 组模拟赛(一)--- H. 封印之门
- 2018 蓝桥杯省赛 B 组模拟赛(一)I. 天上的星星
- 计蒜客 2018 蓝桥杯省赛 B 组模拟赛(五)J. 程序设计:划分整数
- 2018 蓝桥杯省赛 B 组模拟赛(五) G. 程序设计:合并数字
- 2018 蓝桥杯省赛 B 组模拟赛(五)E. 代码填空:末尾零的个数
- 计蒜客 2018 蓝桥杯省赛 B 组模拟赛(一)-E. 代码填空:全排列