維護斐波那契數列通項公式

2022-05-10 22:14:13 字數 1044 閱讀 1416

在模意義下,使用通項公式沒有了精度誤差,就變的可以使用了

斐波那契數列的通項公式是:

\(f(n)=\frac+1}^-\frac+1}^}}\)

而 \(\sqrt\) 在不同的模數下,不一定存在,否則列舉一下或者二次剩餘定理弄一下就可以求出來

在通項公式中是實際上可以把兩項分開算 \(\frac+1}^\),\(\frac+1}^\)

但是在分母中還是有乙個 \(\sqrt\) 要除,那麼我們觀察式子,分子的不帶 \(\sqrt\) 的項都是相同的,並且指數都是 \(n\),所以最後求出來的結果是一樣的,最後相減就抵消了,所以我們只需要關心 \(\sqrt\) 的係數就行了,最關鍵的是:分母還有乙個 \(\sqrt\) 那麼不就和分子中的 \(\sqrt\) 抵消掉了,我們根本不用關心\(\sqrt\) 的值了,最後答案就是 \(\sqrt\) 的係數了

不妨把乙個數表示成 \(a*\sqrt+b\) 的形式,那麼乘法之後還是乙個關於 \(\sqrt\) 的表示式

我們定義乙個類,過載一下運算就可以了

關於這個東西求逆,列個方程算一下發現逆元就是 \(\frac*a}+\frac\),相乘得到 \((0,1)\)

#includeusing namespace std;

typedef long long ll;

const int n=1100,mod=998244353,inv2=499122177;

ll f[n];

inline int qpow(int x,int k)

return sum;

}struct num

num(int _a,int _b)

num operator *(const num &p)

num operator -(const num &p)

num inv()

}z=num(inv2,inv2),f=num(mod-inv2,inv2);

inline num qm(num x,int k)

return s;

}int main()

斐波那契數列通項公式

斐波那契數列指的是每一項都等於前兩項之和的數列,定義為f 1 1,f 2 1,f n f n 1 f n 2 n 3 我們先來研究形如f n c1f n 1 c2f n 2 的數列。對於這樣的數列,f n xf n 1 與f n 1 xf n 2 的比值一定是乙個定值,即 將其進行移項運算,得 對應...

斐波那契數列 通項公式 數學

2007年到來了。經過2006年一年的修煉,數學神童zouyu終於把0到100000000的fibonacci數列 f 0 0,f 1 1 f i f i 1 f 2 i 2 的值全部給背了下來。接下來,codestar決定要考考他,於是每問他乙個數字,他就要把答案說出來,不過有的數字太長了。所以規...

波菲那契數列公式 裴波那契數列的通項公式?

遞推公式 an a n 1 a n 2 通項公式及推導方法 斐波那契數列公式的推導 斐波那契數列 1 1 2 3 5 8 13 21 如果設f n 為該數列的第n項 n n 那麼這句話可以寫成如下形式 f 0 0,f 1 f 2 1,f n f n 1 f n 2 n 3 顯然這是乙個線性遞推數列。...