2018 藍橋杯省賽 B 組模擬賽(一) 數列求值

2021-08-14 20:59:10 字數 1339 閱讀 4823

對於乙個含有 n+2n+

2 個元素的數列,a_0, a_1, \cdots a_na0

​,a1

​,⋯a

n​,滿足這樣的遞迴公式

\displaystyle a_i = \frac + a_} - c_i\ \ \ 1 \le i \le nai

​=2a

i−1​

+ai+

1​​−

ci​1

≤i≤n

現在我們知道 a_0, a_a0

​,an

+1​ 和 c_1, c_2, \cdots c_nc1

​,c2

​,⋯c

n​。現在請你幫忙計算 a_1a1

​ 的值。

第一行輸入乙個整數 n(1 \le n \le 1000)n(

1≤n≤

1000

)。第二行輸入兩個數 a_0a0

​ 和 a_an

+1​,接著是 n

n 個資料分別是 c_1,c_2, \cdots c_nc1

​,c2

​,⋯c

n​。所有的資料均是兩位小數的浮點數。

輸出 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

#include

using namespace std;

double a[1010];

double val[1010];

int main()

for (int i= 1; i <= n; ++i)

double ans= (q- a[n + 1]) /(n + 1);

printf("%.2lf\n",ans);

return 0;}

2018 藍橋杯省賽 B 組模擬賽(一)

給你乙個序列,請你在其中求出一段最長嚴格上公升的部分,它不一定要連續。include includeusing namespace std int f 10000 b 10000 int lis int n res max res,f i return res 1 int main printf d...

2019 藍橋杯省賽 B 組模擬賽(一)

d.結果填空 馬的管轄 e.填空 lis f.程式設計 找質數 思路 因為時間複雜度的問題,o n n 的時間複雜度可能會超時,可以選擇的篩選素數的方法有埃氏篩法o n logn 尤拉篩法,這裡選的是尤拉篩法o n 直接遍歷找兩個素數相加等於n 因為要求字典樹最小,所以不會超時 ac include...

2018 藍橋杯省賽 B 組模擬賽(五)整數劃分

蒜頭君特別喜歡數學。今天,蒜頭君突發奇想 如果想要把乙個正整數 n n 分解成不多於 k k 個正整數相加的形式,那麼一共有多少種分解的方式呢?蒜頭君覺得這個問題實在是太難了,於是他想讓你幫幫忙。共一行,包含兩個整數 n 1 leq n leq 300 n 1 n 300 和 k 1 leq k l...