2018 蓝桥杯省赛 A 组模拟赛(一)数列求值+推导
題目:
對于一個含有 n+2個元素的數列,A0、A1、……、An+1A_{0}、A_{1}、……、A_{n+1}A0?、A1?、……、An+1? ,滿足這樣的遞歸公式
Ai=Ai?1+Ai+12?CiA_{i}=\frac{A_{i-1}+A_{i+1}}{2}-C_{i}Ai?=2Ai?1?+Ai+1???Ci?
現在我們知道 A0、An+1A_{0}、A_{n+1}A0?、An+1?和C1、C2、……、CnC_{1}、C_{2}、……、C_{n}C1?、C2?、……、Cn?
現在請你幫忙計算 A1A_{1}A1? 的值。
輸入格式
第一行輸入一個整數 n(1≤n≤10001 \leq n \leq 10001≤n≤1000)。
第二行輸入兩個數 A0、An+1A_{0}、A_{n+1}A0?、An+1?,接著是 n 個數據分別是 C1、C2、……、CnC_{1}、C_{2}、……、C_{n}C1?、C2?、……、Cn? 。所有的數據均是兩位小數的浮點數。
輸出格式
輸出 A1A_{1}A1? 的值,結果保留兩位小數。
樣例輸入1
1
50.50 25.50
10.15
樣例輸出1
27.85
樣例輸入2
2
-756.89 52.52
172.22 67.17
樣例輸出2
-761.49
分析:
由遞推公式:Ai=Ai?1+Ai+12?CiA_{i}=\frac{A_{i-1}+A_{i+1}}{2}-C_{i}Ai?=2Ai?1?+Ai+1???Ci?
A1=A0+A22?C1A_{1}=\frac{A_{0}+A_{2}}{2}-C_{1}A1?=2A0?+A2???C1?
A2=A1+A32?C2?A_{2}=\frac{A_{1}+A_{3}}{2}-C_{2}\RightarrowA2?=2A1?+A3???C2?? 3A2=A0?2(C1+2C2)+2A33A_{2}=A_{0}-2(C_{1}+2C_{2})+2A_{3}3A2?=A0??2(C1?+2C2?)+2A3?
A3=A2+A42?C3?A_{3}=\frac{A_{2}+A_{4}}{2}-C_{3}\RightarrowA3?=2A2?+A4???C3?? 4A3=A0?2(C1+2C2+3C3)+3A44A_{3}=A_{0}-2(C_{1}+2C_{2}+3C_{3})+3A_{4}4A3?=A0??2(C1?+2C2?+3C3?)+3A4?
由以上可以推導出:
(n+1)An=A0?2F(n)+nAn+1(n+1)A_{n}=A_{0}-2F(n)+nA_{n+1}(n+1)An?=A0??2F(n)+nAn+1?
?\Rightarrow?An=A0?2F(n)+nAn+1n+1A_{n}=\frac{A_{0}-2F(n)+nA_{n+1}}{n+1}An?=n+1A0??2F(n)+nAn+1??
F(n)=C1+2C2+3C3+……nCnF(n)=C_{1}+2C_{2}+3C_{3}+……nC_{n}F(n)=C1?+2C2?+3C3?+……nCn?
故此向后遍歷即可獲得A1A_{1}A1?的值。
AC代碼:
#include<bits/stdc++.h> using namespace std; double e[1010],dp[1010],f[1010]; int n; int main(){cin>>n;cin>>f[0]>>f[n+1];for(int i=1;i<=n;i++)cin>>e[i];dp[1]=e[1];for(int i=2;i<=n;i++)dp[i]=dp[i-1]+i*e[i];for(int i=n;i>=1;i--)f[i]=(f[0]-2*dp[i]+i*f[i+1])/(i+1);printf("%.2f\n",f[1]);//cout<<f[1]<<endl;return 0; }總結
以上是生活随笔為你收集整理的2018 蓝桥杯省赛 A 组模拟赛(一)数列求值+推导的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2021年广东工业大学第十五届文远知行杯
- 下一篇: 氨茶碱片的作用及功效