在模意義下,使用通項公式沒有了精度誤差,就變的可以使用了
斐波那契數列的通項公式是:
\(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 顯然這是乙個線性遞推數列。...