斐波那契
斐波那契
一、斐波那契数列:
1、公式为:\(F_0=0,F_1=1,F_n=F_{n-1}+F_{n-2}\),前几项为:\(0,1,1,2,3,5,8,13,21,34,55,89...\)。
2、求解斐波那契数列:
-
利用递推式求解,时间复杂度为 \(O(n)\)。
-
利用矩阵快速幂求解,时间复杂度为 \(O(2*2*2log(n))=O(8log(n))\)。
-
利用斐波那契通项公式来求解,时间复杂度为 \(O(1)\)。
-
通项公式求解:\(F_n=\frac{(\frac{1+\sqrt{5}}{2})^n-(\frac{1-\sqrt{5}}{2})^{n}}{\sqrt{5}}\)。
可以发现,这个式子分子的第二项总是小于1,并且它以指数级的速度减小,所以我们可以把这个式子写成 \(F_n=[\frac{\frac{1+\sqrt{5}}{2}^{n}}{\sqrt{5}}]\)。
其中这里的中括号表示取离它最近的整数,但是这两个公式在计算中要求的精确度极高,但也是有用的。
二、卢卡斯数列:
1、公式为:\(L_0=2,L_1=1,L_n=L_{n-1}+L_{n-2}\),前几项为:\(2,1,3,4,7,11,18,29,47,76,123,199\)。
2、求解卢卡斯数列:
- 通项公式求解:\(L_n=(\frac{1+\sqrt{5}}{2})^{n}+(\frac{1-\sqrt{5}}{2})^{n}\)。
其中和斐波那契数列一样后面那项可以省略。
三、两者结合:
1、\(\frac{L_n+F_n\sqrt{5}}{2}=(\frac{1+\sqrt{5}}{2})^n\)。
-
由 \(pell\) 方程可得:\((L_n)^{2}-5(F_n)^2=-4\)。
-
即已知 \(F_n\) 和 \(L_n\) 的任意一个,就可以 \(O(1)\) 得到另一个。
四、斐波那契数列的性质:
1、二元组公式:\(\left\{\begin{array}{l} F_{2n}=F_n(2F_{n+1}-F_{n}) \\ F_{2n+1}=F_{n+1}^{2}+F_{n}^{2} \end{array}\right.\)
- 我们可以快速的得到一个斐波那契相邻连续二元组 \((F_n,F_{n+1})\)。
inline PI fib(i64 n, i64 p = 1e9 + 7) {
if (n == 0) return {0LL, 1LL};
auto [x, y] = fib(n >> 1LL);
i64 c = x * ((2LL * y % p - x + p) % p) % p;
i64 d = (x * x % p + y * y % p) % p;
if (n & 1) return {d, c + d};
return {c, d};
}
2、卡西尼性质:\(F_{n-1}F_{n+1}-F_n^2=(-1)^n\)。
3、推论:\(F_{n+k}=F_{k}F_{n+1}+F_{k-1}F_{n}\)。
4、令 \(3\) 中的 \(k=n\),则得到 \(F_{2n}=F_n(F_{n+1}+F_{n-1})\)。
5、由上一条性质可以得到:\(\forall k \in N,F_n|F_{nk}\)。
6、\(GCD\) 性质:\(gcd(F_n,F_m)=F_{gcd(n,m)}\)。
7、二倍下标公式等式:\(\left\{\begin{array}{l} L_{2n}=(L_n)^2 - 2(- 1)^n \\ F_{2n}=F_nL_n \end{array}\right.\)
8、\(F_{n+1}F_{n}=\sum_{i=0}^{n}(F_{i})^2\)。
9、\(F_n^2=2F_{n-1}^2+2F_{n-2}^{2}-F_{n-3}^{2}\)。
10、\(gcd(F_{n+1},F_{n})=1\)。

浙公网安备 33010602011771号