P1487 失落的成績單

2022-02-27 08:42:28 字數 1473 閱讀 8735

乙個長度為 \(n\) 的序列,已知 \(a_1,a_n,n,d\),並滿足 \(a_i=\dfrac+a_}+d\),求 \(a_m\)

最近數學課學了點特徵方程,所以用它做了下這題

一般用特徵方程求通項的時候,是已知數列滿足 \(a_+ba_i+ca_=0\)

那麼設 \(a_-pa_n=q(a_n-pa_)\),轉化成 \(a_-(p+q)a_n+pqa_=0\)

此時應滿足 \(p+q=-b,pq=c\)

然後用韋達定理構造乙個兩個解分別是 \(p,q\) 的二次方程並把它解出來,就知道 \(p,q\) 了

如果無解當然就是不能這樣構造

進而設 \(b_n=a_-pa_n\),則:

\[b_n=qb_\rightarrow b_n=a_-pa_n=b_1q^=(a_2-pa_1)q^

\]同時除以 \(p^\),就是:

\[\dfrac}}-\dfrac=\dfrac}}

\]再設 \(c_n=\dfrac\)

就可以表示成:

\[c_-c_n=\dfrac}}

\]那麼對 \(c\) 做乙個累加,中間的一堆項就消沒了,得到:

\[c_n-c_1=\sum_^\dfrac}}

\]\[c_n=\dfrac\cdot \dfrac)^}}+\dfrac

\]還原成 \(a_n\),就是:

\[a_n=\dfrac(a_2-pa_1)(1-(\frac)^)}}+a_1p^

\]\[a_n=\dfrac}-p^)(a_2-pa_1)}-1}+a_1p^

\]也許能再化簡讓形式更好看一些?但我懶得化了

再看這個題

\[a_+2a_i-a_=2d

\]發現這個 \(2d\) 很耽誤事,但是可以設 \(a_i=a_i+d\),於是:

\[a_+2a_i-a_=0

\]按照之前講的,此時應滿足 \(p+q=-2,pq=-1\),於是構造方程 \(x^2+2x-1=0\)

兩個解對應 \(p,q\),也就是 \(p=\sqrt-1,q=-\sqrt-1\),當然把它們的值互換也不會對結果產生影響

但我們並不知道 \(a_n\) 表示式裡的 \(a_2\) 是什麼,但是知道 \(a_n\),於是可以變一下那個式子把 \(a_2\) 求出來:

\[a_2=\frac-1)(a_n-a_1p^)}}-p^}+a_1p

\]然後就可以帶入 \(n=m\) 來求出答案了

注意判斷一下 \(m=0\) 這種奇怪的情況

#include#include#include#include#include#include#include#define reg register

#define en std::puts("")

#define ll long long

inline long double power(long double a,int b)

int main()

luogu P1487失落的成績單

n 60,顯然不用矩陣乘法 由題目的遞推式可得,ai 2a i 1 a i 2 2d an 2a n 1 a n 2 2d 將右邊一直分解,顯然可以得到乙個只含a2的方程式,將a2解出來後,就可以通過遞推式求出am 資料大了還是要矩陣乘法的 include include include inclu...

帶姓名的成績單 a

作 者 霍雨佳 完成日期 2013 年12月5日 版 本 號 v1.0 問題描述 輸出按成績排名後的同學名單。樣例輸入 樣例輸出 問題分析 輸入同學的姓名成績,輸出按成績排名後的同學名單。include using namespace std int main string k,name 20 fo...

帶姓名的多科成績單

用陣列string name表示同學們的姓名,使姓名與成績的下標保持一致。設計輸入成績的函式,輸入3科成績後可以自動求出總分,並將資料全儲存到陣列中 include includeconst int size 2 using namespace std void outputfun string n...