斐波那契专题
提一嘴
斐波那契数的氺是真的深_(;3/<)_
貌似因为Latex原因那个根号显示不出来?(编辑界面是有的)
在
α
与
β
\alpha 与 \beta
α与β 的地方,自动脑补 (1+根号5)/2 和(1-根号5)/2
斐波那契序列的定义
-
斐波那契序列的递归定义:
f n = { 1 , n = 1 , 2 f n − 1 + f n − 2 n ≥ 3 f_n=\begin{cases} 1,& n=1,2\\ f_{n-1}+f_{n-2}& n\ge3 \end{cases} fn={1,fn−1+fn−2n=1,2n≥3 -
斐波那契的广义定义:
f n = { 0 n = 0 1 n = 1 f n − 1 + f n − 2 n ≥ 3 f n + 2 − f n + 1 n ≤ − 1 f_n=\begin{cases} 0&n=0\\ 1&n=1\\ f_{n-1}+f_{n-2}&n\ge3\\ f_{n+2}-f_{n+1}&n\le-1 \end{cases} fn=⎩⎪⎪⎪⎨⎪⎪⎪⎧01fn−1+fn−2fn+2−fn+1n=0n=1n≥3n≤−1
- 斐波那契的广义定义的前几项序列:
x | -6 | -5 | -4 | -3 | -2 | -1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
f(x) | -8 | 5 | -3 | 2 | -1 | 1 | 0 | 1 | 1 | 2 | 3 | 5 | 8 |
[负项看着很有规律?规律在后面!]
斐波那契序列的基本性质
-
性质 I \mathrm{I} I :前n项和恒等式(4/10)
- ∑ n k = 1 f k = f n + 2 − 1 \color{red}\underset{k=1}{\overset{n}{\sum}}f_k=f_{n+2}-1 k=1∑nfk=fn+2−1
- 证明:叠进法: ∑ n k = 1 f k = ∑ n k = 1 ( f k + 2 − f k + 1 ) = f n + 2 − f 2 = f n + 2 − 1 \underset{k=1}{\overset{n}{\sum}}f_k=\underset{k=1}{\overset{n}{\sum}}(f_{k+2}-f_{k+1})=f_{n+2}-f_2=f_{n+2}-1 k=1∑nfk=k=1∑n(fk+2−fk+1)=fn+2−f2=fn+2−1
- 用途:可以 O ( lg N ) O(\lg N) O(lgN) 求前 N N N 项和
-
性质 I I \mathrm{II} II :前奇项和 (2/10)
-
∑ 2 n k = 1 [ k m o d 2 = 1 ] × f k = f 2 n \color{red}\underset{k=1}{\overset{2n}{\sum}}\Big[\;k\bmod2\;=1\Big]\times f_k=f_{2n} k=1∑2n[kmod2=1]×fk=f2n
-
证明:
f 2 n = f 2 n − 1 + f 2 n − 2 = f 2 n − 1 + f 2 n − 3 + f 2 n − 4 ⋮ = f 2 n − 1 + f 2 n − 3 + ⋯ + f 3 + f 1 = ∑ 2 n k = 1 [ k m o d 2 = 1 ] × f k \begin{aligned}f_{2n}&=f_{2n-1}+f_{2n-2}\\&=f_{2n-1}+f_{2n-3}+f_{2n-4}\\&\;\;\vdots\\&=f_{2n-1}+f_{2n-3}+\cdots+f_3+f_1\\&=\underset{k=1}{\overset{2n}{\sum}}\Big[\;k\bmod2\;=1\Big]\times f_k\end{aligned} f2n=f2n−1+f2n−2=f2n−1+f2n−3+f2n−4⋮=f2n−1+f2n−3+⋯+f3+f1=k=1∑2n[kmod2=1]×fk
-
用途:可以 O ( lg N ) O(\lg N) O(lgN) 求前奇项和
-
-
性质 I I I \mathrm{III} III :前偶项和 (2/10)
-
∑ 2 n k = 1 [ k m o d 2 = 0 ] × f k = f 2 n + 1 − 1 \color{red}\underset{k=1}{\overset{2n}{\sum}}\Big[\;k\bmod2\;=0\Big]\times f_k=f_{2n+1}-1 k=1∑2n[kmod2=0]×fk=f2n+1−1
-
证明:前 2 n 2n 2n 全项 - 前 2 n 2n 2n 奇项即可。
∑ 2 n k = 1 [ k m o d 2 = 0 ] × f k = ∑ 2 n k = 1 f k − ∑ 2 n k = 1 [ k m o d 2 = 0 ] × f k = f 2 n + 2 − 1 − f 2 n = f 2 n + 1 − 1 \underset{k=1}{\overset{2n}{\sum}}\Big[\;k\bmod2\;=0\Big]\times f_k=\underset{k=1}{\overset{2n}{\sum}}f_k-\underset{k=1}{\overset{2n}{\sum}}\Big[\;k\bmod2\;=0\Big]\times f_k=f_{2n+2}-1-f_{2n}=f_{2n+1}-1 k=1∑2n[kmod2=0]×fk=k=1∑2nfk−k=1∑2n[kmod2=0]×fk=f2n+2−1−f2n=f2n+1−1
-
用途:可以 O ( lg N ) O(\lg N) O(lgN) 求前偶项和
-
-
性质 I V \mathrm{IV} IV :前n项平方和 = 邻项积 (4/10)
-
∑ n k = 1 f k 2 = f n × f n + 1 \color{red}\underset{k=1}{\overset{n}{\sum}}f_k^2=f_n\times f_{n+1} k=1∑nfk2=fn×fn+1
-
证明:数学归纳证明:
∑ n + 1 k = 1 f k 2 = f n + f n + 1 + f n + 1 2 = f n + 1 ( f n + f n + 1 ) = f n + 1 × f n + 2 \begin{aligned}\underset{k=1}{\overset{n+1}{\sum}}f_k^2&=f_n+f_{n+1}+f_{n+1}^2\\&=f_{n+1}(f_n+f_{n+1})\\&=f_{n+1}\times f_{n+2}\end{aligned} k=1∑n+1fk2=fn+fn+1+fn+12=fn+1(fn+fn+1)=fn+1×fn+2
-
用途:可以 O ( lg N ) O(\lg N) O(lgN) 求前 n n n 项平方和
-
-
性质 V \mathrm{V} V :邻项积的和 (4/10)
-
f 1 f 2 + f 2 f 3 + ⋯ + f 2 n − 1 f 2 n = f 2 n 2 \color{red}f_1f_2+f_2f_3+\cdots+f_{2n-1}f_{2n}=f_{2n}^2 f1f2+f2f3+⋯+f2n−1f2n=f2n2
-
证明:数学归纳法证明:
S n + 1 = f 1 f 2 + f 2 f 3 + ⋯ + f 2 n − 1 f 2 n + f 2 n f 2 n + 1 + f 2 n + 1 f 2 n + 2 = f 2 n 2 + f 2 n f 2 n + 1 + f 2 n + 1 f 2 n + 2 = f 2 n f 2 n + 2 + f 2 n + 1 f 2 n + 2 = f 2 n + 2 2 \begin{aligned}S_{n+1}&=f_1f_2+f_2f_3+\cdots+f_{2n-1}f_{2n}+f_{2n}f_{2n+1}+f_{2n+1}f_{2n+2}\\&=f_{2n}^2+f_{2n}f_{2n+1}+f_{2n+1}f_{2n+2}\\&=f_{2n}f_{2n+2}+f_{2n+1}f_{2n+2}\\&=f_{2n+2}^2\end{aligned} Sn+1=f1f2+f2f3+⋯+f2n−1f2n+f2nf2n+1+f2n+1f2n+2=f2n2+f2nf2n+1+f2n+1f2n+2=f2nf2n+2+f2n+1f2n+2=f2n+22
-
用途:可以 O ( lg N ) O(\lg N) O(lgN) 求前 n n n 项邻项积的和
-
-
性质 V I \mathrm{VI} VI :前n项系数为幂的和( n ≥ 3 n\ge3 n≥3) (1.5/10)
-
f n + f n − 1 + f n − 2 + 2 f n − 3 + 4 f n − 4 + 8 f n − 5 + ⋯ + 2 n − 3 = 2 n − 1 f_n+f_{n-1}+f_{n-2}+2f_{n-3}+4f_{n-4}+8f_{n-5}+\cdots+2^{n-3}=2^{n-1} fn+fn−1+fn−2+2fn−3+4fn−4+8fn−5+⋯+2n−3=2n−1
-
证明:第二数归证明:
S n + 1 = f n + 1 + f n + f n − 1 + 2 f n − 2 + ⋯ + 2 n − 2 ‾ = 2 n − 1 + f n + 1 + f n − 2 + 2 f n − 3 + ⋯ + 2 n − 3 = 2 n − 1 + f n + f n − 1 + f n − 2 + 2 f n − 3 + ⋯ + 2 n − 3 ‾ = 2 n − 1 + 2 n − 1 = 2 n \begin{aligned}S_{n+1}&=f_{n+1}+\underline{f_n+f_{n-1}+2f_{n-2}+\cdots+2^{n-2}}\\&=2^{n-1}+f_{n+1}+f_{n-2}+2f_{n-3}+\cdots+2^{n-3}\\&=2^{n-1}+\underline{f_n+f_{n-1}+f_{n-2}+2f_{n-3}+\cdots+2^{n-3}}\\&=2^{n-1}+2^{n-1}\\&=2^n\end{aligned} Sn+1=fn+1+fn+fn−1+2fn−2+⋯+2n−2=2n−1+fn+1+fn−2+2fn−3+⋯+2n−3=2n−1+fn+fn−1+fn−2+2fn−3+⋯+2n−3=2n−1+2n−1=2n
-
用途:可以 O ( lg N ) O(\lg N) O(lgN) 求前这么一个表达式
-
-
性质 V I I \mathrm{VII} VII :基本转换 (2/10)
-
f m + n = f m f n + 1 + f n f m − 1 \color{red}f_{m+n}=f_mf_{n+1}+f_nf_{m-1} fm+n=fmfn+1+fnfm−1
-
证明:
-
-
性质 V I I I \mathrm{VIII} VIII :显式公式 (5/10)
- f n = 1 根 号 5 ( α n − β n ) \color{red}f_n=\frac{1}{根号5}\Big(\alpha^n-\beta^n\Big) fn=根号51(αn−βn)
- 其中 α = 1 + 根 号 5 2 , β = 1 − 根 号 5 2 \alpha=\frac{1+根号5}{2},\beta=\frac{1-根号5}{2} α=21+根号5,β=21−根号5
- 证明:在后方处。
-
其他计算时需要掌握的基本恒等式:
- 1.4.5: f 2 n = f n 2 + 2 f n − 1 f n f_{2n}=f_n^2+2f_{n-1}f_n f2n=fn2+2fn−1fn
- 1.4.6: f n − 2 + f n + 2 = 3 f n f_{n-2}+f_{n+2}=3f_n fn−2+fn+2=3fn 易得
- 1.4.10: f 2 n + 1 = f n + 1 2 + f n 2 f_{2n+1}=f_{n+1}^2+f_n^2 f2n+1=fn+12+fn2 在性质 X V I I I \mathrm{XVIII} XVIII 处证得
- 1.4.11: f 2 n = f n + 1 2 − f n − 1 2 f_{2n}=f_{n+1}^2-f_{n-1}^2 f2n=fn+12−fn−12在性质 X V I I I \mathrm{XVIII} XVIII 处证得
- 1.4.14: f n + 1 f n − 1 − f n 2 = ( − 1 ) n n ≥ 2 f_{n+1}f_{n-1}-f_n^2=(-1)^n\qquad n\ge2 fn+1fn−1−fn2=(−1)nn≥2
- 1.4.15: f n + 1 f n − f n − 1 f n − 2 = f 2 n − 1 f_{n+1}f_n-f_{n-1}f_{n-2}=f_{2n-1} fn+1fn−fn−1fn−2=f2n−1
卢卡斯数
- 卢卡斯数的递归定义:
L n = { 1 n = 1 3 n = 2 L n − 1 + L n − 2 n ≥ 3 L_n=\begin{cases} 1& n=1\\ 3& n=2\\ L_{n-1}+L_{n-2}&n\ge3 \end{cases} Ln=⎩⎪⎨⎪⎧13Ln−1+Ln−2n=1n=2n≥3
- 卢卡斯的前几项序列:
x | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
---|---|---|---|---|---|---|---|---|---|---|---|---|
L(x) | 1 | 3 | 4 | 7 | 11 | 18 | 29 | 47 | 76 | 123 | 199 | 322 |
卢卡斯数的基本性质
- 性质
I
\mathrm{I}
I : 前
n
n
n 项和 (3/10)
- ∑ n k = 1 L k = L n + 2 − 3 \color{red}\underset{k=1}{\overset{n}{\sum}}L_k=L_{n+2}-3 k=1∑nLk=Ln+2−3
- 性质
I
I
\mathrm{II}
II : 前奇项和 (3/10)
- ∑ 2 n k = 1 [ k m o d 2 = 1 ] × L k = L 2 n − 2 \color{red}\underset{k=1}{\overset{2n}{\sum}}\Big[k\bmod2=1\Big]\times L_k=L_{2n}-2 k=1∑2n[kmod2=1]×Lk=L2n−2
- 性质
I
I
I
\mathrm{III}
III : 前偶项和 (3/10)
- ∑ 2 n k = 1 [ k m o d 2 = 0 ] × L k = L 2 n + 1 − 1 \color{red}\underset{k=1}{\overset{2n}{\sum}}\Big[k\bmod2=0\Big]\times L_k=L_{2n+1}-1 k=1∑2n[kmod2=0]×Lk=L2n+1−1
- 性质
I
V
\mathrm{IV}
IV : 前
n
n
n 项平方和 (3/10)
- ∑ n k = 1 L k 2 = L n L n + 1 − 2 \color{red}\underset{k=1}{\overset{n}{\sum}}L_k^2=L_nL_{n+1}-2 k=1∑nLk2=LnLn+1−2
- 性质
V
\mathrm{V}
V : 卢卡斯数与斐波那契数的转换 (5/10)
- L n = f n + 1 + f n − 1 \color{red}L_n=f_{n+1}+f_{n-1} Ln=fn+1+fn−1
- 性质
V
I
\mathrm{VI}
VI : 卢卡斯数与斐波那契数的关系 (2/10)
- 1.4.25 : f 2 n = f n L n f_{2n}=f_nL_n f2n=fnLn
- 1.4.26 : 5 f n + 1 = L n + L n + 2 5f_{n+1}=L_n+L_{n+2} 5fn+1=Ln+Ln+2
- 1.4.27 : L m + n = f m + 1 L n + f m L n − 1 L_{m+n}=f_{m+1}L_n+f_mL_{n-1} Lm+n=fm+1Ln+fmLn−1
- 性质
V
I
I
\mathrm{VII}
VII : 显式公式 (5/10)
- L n = α n + β n \color{red}L_n=\alpha^n+\beta^n Ln=αn+βn
- 其中 α = 1 + 根 号 5 2 , β = 1 − 根 号 5 2 \alpha=\frac{1+根号5}{2},\beta=\frac{1-根号5}{2} α=21+根号5,β=21−根号5
正整数的泽肯朵夫(Zeckendorf)表示
-
定义:正整数的泽肯朵夫表示是吧整数写成不同的斐波那契数的和的唯一表示。
其中这些斐波那契数中没有任何两个是斐波那契序列的连续项
并且不使用 f 1 = 1 f_1=1 f1=1这项。(但可以使用 f 2 = 1 f_2=1 f2=1这项)
-
例子: 50 = 33 + 12 + 5 85 = 54 + 21 + 8 + 2 110 = 89 + 21 200 = 143 + 54 + 3 50=33+12+5\\85=54+21+8+2\\110=89+21\\200=143+54+3 50=33+12+585=54+21+8+2110=89+21200=143+54+3
-
性质:每个正整数都有唯一的泽肯朵夫表示。
-
证明(百度百科大法,太长啦!):
其他斐波那契的性质
-
性质 I X \mathrm{IX} IX :增长速率与函数趋势 (2/10)
- f n ≤ α n − 1 f_n\le\alpha^{n-1} fn≤αn−1
- 对于 n ≥ 2 n\ge2 n≥2 的正整数成立
- 其中 α = 1 + 根 号 5 2 \alpha=\frac{1+根号5}{2} α=21+根号5
-
性质 X \mathrm{X} X :组合数的和 (2/10)
-
( n 0 ) + ( n − 1 1 ) + ( n − 2 2 ) + ⋯ + ( 1 n − 1 ) = f n + 1 \begin{pmatrix}n\\0\end{pmatrix}+\begin{pmatrix}n-1\\1\end{pmatrix}+\begin{pmatrix}n-2\\2\end{pmatrix}+\cdots+\begin{pmatrix}1\\n-1\end{pmatrix}=f_{n+1} (n0)+(n−11)+(n−22)+⋯+(1n−1)=fn+1
-
证明:运用第二数学归纳与组合数的性质来做:
( a b ) + ( a b + 1 ) = ( a + 1 b + 1 ) \begin{pmatrix}a\\b\end{pmatrix}+\begin{pmatrix}a\\b+1\end{pmatrix}=\begin{pmatrix}a+1\\b+1\end{pmatrix} (ab)+(ab+1)=(a+1b+1)
-
-
性质 X I \mathrm{XI} XI :组合数乘斐波那契的和 (4/10)
- ∑ n k = 1 ( n j ) f k = f 2 n \color{red}\underset{k=1}{\overset{n}{\sum}}\begin{pmatrix}n\\j\end{pmatrix}f_k=f_{2n} k=1∑n(nj)fk=f2n
- 证明:
∵ α 2 = α + 1 , β 2 = β + 1 ∴ f 2 n = α 2 n − β 2 n 根 号 5 = 1 根 号 5 ( ( α + 1 ) n − ( β + 1 ) n ) = 1 根 号 5 ( ∑ n k = 0 ( n k ) α k − ∑ n k = 0 ( n k ) β k ) = 1 根 号 5 ∑ n k = 0 ( n k ) ( α k − β k ) = ∑ n k = 1 ( n j ) f k □ \begin{aligned} &\because\alpha^2=\alpha+1,\;\beta^2=\beta+1\\ \therefore f_{2n}&=\frac{\alpha^{2n}-\beta^{2n}}{根号5}\\ &=\frac{1}{根号5}\Bigg(\Big(\alpha+1\Big)^n-\Big(\beta+1\Big)^n\Bigg)\\ &=\frac{1}{根号5}\Bigg(\underset{k=0}{\overset{n}{\sum}}\begin{pmatrix}n\\k\end{pmatrix}\alpha^k-\underset{k=0}{\overset{n}{\sum}}\begin{pmatrix}n\\k\end{pmatrix}\beta^k\Bigg)\\ &=\frac{1}{根号5}\underset{k=0}{\overset{n}{\sum}}\begin{pmatrix}n\\k\end{pmatrix}(\alpha^k-\beta^k)\\ &=\underset{k=1}{\overset{n}{\sum}}\begin{pmatrix}n\\j\end{pmatrix}f_k\qquad\Box \end{aligned} ∴f2n∵α2=α+1,β2=β+1=根号5α2n−β2n=根号51((α+1)n−(β+1)n)=根号51(k=0∑n(nk)αk−k=0∑n(nk)βk)=根号51k=0∑n(nk)(αk−βk)=k=1∑n(nj)fk□
-
性质 X I I \mathrm{XII} XII :矩阵快速幂与斐波那契 (7/10)
- 设 F = [ 1 1 1 0 ] F=\begin{bmatrix}1&1\\1&0\end{bmatrix} F=[1110]
- 则当 n ∈ Z + n\in \mathbb{Z}^+ n∈Z+ 时, F n = [ f n + 1 f n f n f n − 1 ] \color{red}F^n=\begin{bmatrix}f_{n+1}&f_n\\f_n&f_{n-1}\end{bmatrix} Fn=[fn+1fnfnfn−1]
- 证明:第二数归即可得证。
- 用途:用这个才可 O ( N lg N ) O(N\lg N) O(NlgN) 求得 f n f_n fn
-
性质 X I I I \mathrm{XIII} XIII :广义斐波那契数与斐波那契 (8/10)
- 广义斐波那契数定义:
- g n = { a n = 1 b n = 2 g n − 1 + g n − 2 n ≥ 3 g_n=\begin{cases}a&n=1\\b&n=2\\g_{n-1}+g_{n-2}&n\ge3\end{cases} gn=⎩⎪⎨⎪⎧abgn−1+gn−2n=1n=2n≥3
- 显式公式:
g
n
=
a
f
n
−
2
+
b
f
n
−
1
n
≥
3
\color{red}g_n=af_{n-2}+bf_{n-1}\qquad n\ge3
gn=afn−2+bfn−1n≥3
- 证明:第二数归即可得证。
-
性质 X I V \mathrm{XIV} XIV :斐波那契数广义定义的负数公式 (5/10)
- f ( n ) = { f ( − n ) n i s o d d − f ( − n ) n i s e v e n f(n)=\begin{cases}f(-n)&n\ is\ odd\\-f(-n)&n\ is\ even\end{cases} f(n)={f(−n)−f(−n)n is oddn is even
- 证明:简单第二数归+分类讨论即可得证。
-
性质 X V \mathrm{XV} XV :斐波那契数与公约数 (6/10)
-
相关证明:参考dl博客:[Mark_ZZY 的博客]与樱花赞
-
引理(1) gcd ( f n , f n + 1 ) = 1 \color{red}\gcd(f_n,f_{n+1})=1 gcd(fn,fn+1)=1
-
证明:辗转相减法
Gcd(F[n+1],F[n]) =Gcd(F[n+1]-F[n],F[n]) =Gcd(F[n],F[n-1]) =Gcd(F[2],F[1]) =1
-
-
引理(2) gcd ( f n + m , f n ) = gcd ( f n , f m ) \color{red}\gcd(f_{n+m},f_n)=\gcd(f_n,f_m) gcd(fn+m,fn)=gcd(fn,fm)
-
证明:利用引理1和性质3(基本转换)
Gcd(F[n+m],F[n]) =Gcd(F[n+1]F[m]+F[n]F[m-1],F[n]); =Gcd(F[n+1]F[m],F[n]); =Gcd(F[n+1],F[n])*Gcd(F[m],F[n]) =Gcd(F[m],F[n]);
-
-
(3) gcd ( f n , f m ) = f gcd ( n , m ) \color{red}\gcd(f_n,f_m)=f_{\gcd(n,m)} gcd(fn,fm)=fgcd(n,m)
-
证明:利用引理2和辗转相除法
I = gcd ( f n , f m ) = gcd ( f ( n m o d m ) , f m ) ⋮ = gcd ( f gcd ( n , m ) , f gcd ( n , m ) ) = f gcd ( n , m ) \begin{aligned}I&=\gcd(f_n,f_m)\\&=\gcd(f_{(n\bmod m)},f_m)\\&\;\;\vdots\\&=\gcd(f_{\gcd(n,m)},f_{\gcd(n,m)})\\&=f_{\gcd(n,m)}\end{aligned} I=gcd(fn,fm)=gcd(f(nmodm),fm)⋮=gcd(fgcd(n,m),fgcd(n,m))=fgcd(n,m)
-
-
-
性质 X V I \mathrm{XVI} XVI :斐波那契数与完全平方数 (3/10)
- 出处:斐波那契数与完全平方数
- ∣ ∑ n k = 1 ( − 1 ) k + 1 f 2 k − 1 ∣ \Big | \underset{k=1}{\overset{n}{\sum}}(-1)^{k+1}f_{2k-1}\Big | ∣∣∣k=1∑n(−1)k+1f2k−1∣∣∣ 是完全平方数
- 证明: I = f 1 − f 3 + f 5 − f 7 + ⋯ + ( − 1 ) n + 1 f 2 n − 1 = 1 − ( f 1 2 + f 2 2 ) + ( f 2 2 + f 3 2 ) − ( f 3 2 + f 4 2 ) + ⋯ = 1 − f 1 2 ( − f 2 2 + f 2 2 ) + ( f 3 2 − f 3 2 ) − f 4 2 ⋯ = ( − 1 ) n f n − 1 2 \begin{aligned}I&=f_1-f_3+f_5-f_7+\cdots+(-1)^{n+1}f_{2n-1}\\&=1-(f_1^2+f_2^2)+(f_2^2+f_3^2)-(f_3^2+f_4^2)+\cdots\\&=1-f_1^2(-f_2^2+f_2^2)+(f_3^2-f_3^2)-f_4^2\cdots\\&=(-1)^nf_{n-1}^2\end{aligned} I=f1−f3+f5−f7+⋯+(−1)n+1f2n−1=1−(f12+f22)+(f22+f32)−(f32+f42)+⋯=1−f12(−f22+f22)+(f32−f32)−f42⋯=(−1)nfn−12
- I I I 加个绝对值之后就是该式子,易得是个完全平方数。
-
性质 X V I I \mathrm{XVII} XVII :斐波那契数与完全平方数2 (3/10)
- ∑ n k = 1 ( − 1 ) n − k f n = f n − 1 − ( − 1 ) n \underset{k=1}{\overset{n}{\sum}}(-1)^{n-k}f_n=f_{n-1}-(-1)^n k=1∑n(−1)n−kfn=fn−1−(−1)n
- 式子为 I = f n − f n − 1 + f n − 2 − ⋯ + ( − 1 ) n + 1 f 1 I=f_n-f_{n-1}+f_{n-2}-\cdots+(-1)^{n+1}f_1 I=fn−fn−1+fn−2−⋯+(−1)n+1f1 ,与上式略有不同。
- 证明:分类讨论即可。
-
性质 X V I I I \mathrm{XVIII} XVIII :两倍项关系 (2/10)
-
出处:百度百科
-
f 2 n f n = f n − 1 + f n + 1 \frac{f_{2n}}{f_n}=f_{n-1}+f_{n+1} fnf2n=fn−1+fn+1
-
证明(好家伙百度百科都不给的要自己证明///)
-
引理1: f 2 n = f n + 1 2 − f n − 1 2 f_{2n}=f_{n+1}^2-f_{n-1}^2 f2n=fn+12−fn−12
-
引理2: f 2 n + 1 = f n + 1 2 + f n 2 f_{2n+1}=f_{n+1}^2+f_n^2 f2n+1=fn+12+fn2
-
证明: n = 1 , 2 都 成 立 用 第 二 数 归 假 设 ∀ k ≤ 2 n + 3 都 满 足 f 2 k + 1 = f k + 1 2 + f k 2 ∴ f 2 n + 5 = 3 f 2 n + 3 − f 2 n + 1 = 3 ( f n + 2 2 + f n + 1 2 ) − ( f n + 1 2 + f n 2 ) = 3 f n + 2 2 + 2 f n + 1 2 − f n 2 n=1,2都成立\\用第二数归假设\forall k\le2n+3都满足 f_{2k+1}=f_{k+1}^2+f_k^2\\\therefore f_{2n+5}=3f_{2n+3}-f_{2n+1}=3(f_{n+2}^2+f_{n+1}^2)-(f_{n+1}^2+f_n^2)=3f_{n+2}^2+2f_{n+1}^2-f_n^2 n=1,2都成立用第二数归假设∀k≤2n+3都满足f2k+1=fk+12+fk2∴f2n+5=3f2n+3−f2n+1=3(fn+22+fn+12)−(fn+12+fn2)=3fn+22+2fn+12−fn2
我们只需证明 3 f n + 2 2 + 2 f n + 1 2 − f n 2 = f n + 3 2 + f n + 2 2 3f_{n+2}^2+2f_{n+1}^2-f_n^2=f_{n+3}^2+f_{n+2}^2 3fn+22+2fn+12−fn2=fn+32+fn+22 成立
我们只需证明 2 f n + 2 2 + 2 f n + 1 2 − f n 2 = ( f n + 2 + f n + 1 ) 2 2f_{n+2}^2+2f_{n+1}^2-f_n^2=(f_{n+2}+f_{n+1})^2 2fn+22+2fn+12−fn2=(fn+2+fn+1)2 成立
我们只需证明 f n + 2 2 + ( f n + 1 + f n ) ( f n + 1 − f n ) = 2 f n + 2 f n + 1 f_{n+2}^2+(f_{n+1}+f_n)(f_{n+1}-f_n)=2f_{n+2}f_{n+1} fn+22+(fn+1+fn)(fn+1−fn)=2fn+2fn+1 成立
我们只需证明 f n + 2 + f n + 1 − f n = 2 f n + 1 f_{n+2}+f_{n+1}-f_n=2f_{n+1} fn+2+fn+1−fn=2fn+1 成立(两边同时消掉 f n + 2 f_{n+2} fn+2)
我们只需证明 f n + 2 − f n = f n + 1 f_{n+2}-f_n=f_{n+1} fn+2−fn=fn+1 成立
此式显然成立,故假设成立,故引理2成立。
-
-
证明引理1:
f 2 n + 1 = f n + 1 2 + f n 2 f_{2n+1}=f_{n+1}^2+f_n^2 f2n+1=fn+12+fn2
f 2 n + 1 = f 2 n + f 2 n − 1 = f 2 n + f n 2 + f n − 1 2 f_{2n+1}=f_{2n}+f_{2n-1}=f_{2n}+f_n^2+f_{n-1}^2 f2n+1=f2n+f2n−1=f2n+fn2+fn−12
联立两式 ∴ f 2 n = f n + 1 2 + f n 2 − f n 2 − f n − 1 2 = f n + 1 2 − f n − 1 2 □ \therefore f_{2n}=f_{n+1}^2+f_n^2-f_n^2-f_{n-1}^2=f_{n+1}^2-f_{n-1}^2\Box ∴f2n=fn+12+fn2−fn2−fn−12=fn+12−fn−12□
-
-
证明性质 X V I I I \mathrm{XVIII} XVIII:
f n f n − 1 + f n f n + 1 = ( f n + 1 − f n − 1 ) f n − 1 + ( f n + 1 − f n − 1 ) f n + 1 = f n + 1 2 − f n − 1 2 = f 2 n \begin{aligned}&f_nf_{n-1}+f_nf_{n+1}\\&=(f_{n+1}-f_{n-1})f_{n-1}+(f_{n+1}-f_{n-1})f_{n+1}\\&=f_{n+1}^2-f_{n-1}^2\\&=f_{2n}\end{aligned} fnfn−1+fnfn+1=(fn+1−fn−1)fn−1+(fn+1−fn−1)fn+1=fn+12−fn−12=f2n
∴ f 2 n f n = f n − 1 + f n + 1 □ \therefore \frac{f_{2n}}{f_n}=f_{n-1}+f_{n+1} \Box ∴fnf2n=fn−1+fn+1□
-
-
-
性质 X I X \mathrm{XIX} XIX :斐波那契数与其他数字的关系(猜想) (2/10)
- 斐波那契数与完全平方数:只有1和144为既是斐波那契数又是平方数
- 斐波那契数与完全立方数:只有8既是斐波那契数又是立方数
- 斐波那契数与三角数 : 可能只有 n n n=1,2,4,8,10 , f n f_n fn 是三角数
-
性质 X X \mathrm{XX} XX :斐波那契数与质数 (4/10)
- 出处:【原】斐波那契质数(Fibonacci Prime)详解
- 斐波那契质数
- 定义:若某Fibonacci数与任何比它小的Fibonacci数互质,那么它就是Fibonacci质数。
- 结论: f 3 和 f 4 是 斐 波 那 契 质 数 。 从 第 五 项 开 始 , 某 项 为 斐 波 那 契 质 数 ⟺ 其 项 数 是 质 数 f_3 和 f_4 是斐波那契质数。从第五项开始,某项为斐波那契质数\iff 其项数是质数 f3和f4是斐波那契质数。从第五项开始,某项为斐波那契质数⟺其项数是质数
常系数的二次线性齐次递归关系
- 定义 : 一个常系数的二次线性齐次递归关系是一个形如:
a n = c 1 a n − 1 + c 2 a n − 2 a_n=c_1a_{n-1}+c_2a_{n-2} an=c1an−1+c2an−2
的方程。
- 其中 c 1 , c 2 c_1,c_2 c1,c2 为实数且 c 2 ≠ 0 c_2\ne0 c2=0 。
- 性质:
- 如果方程 r 2 − c 1 r − c 2 = 0 r^2-c_1r-c_2=0 r2−c1r−c2=0 有两个不同的根 r 1 , r 2 r_1,r_2 r1,r2
- 则序列 { a n } \{a_n\} {an} 的解当且仅当 a n = C 1 r 1 n + C 2 r 2 n \color{red}a_n=C_1r_1^n+C_2r_2^n an=C1r1n+C2r2n
- 其中 n ∈ N n\in \mathbb{N} n∈N 且 C 1 , C 2 C_1,C_2 C1,C2 为常数,可以通过序列的前两项得到。
斐波那契进制/斐波那契编码
- 斐波那契进制:
base:
1(10) = 1(fib);
2(10) = 10(fib);
3(10) = 100(fib);
5(10) = 1000(fib);
8(10) = 10000(fib);
…
e.g.
4(10) = 3(10) + 1(10) = 101(fib);
6(10) = 5(10) + 1(10) = 1001(fib);
7(10) = 5(10) + 2(10) = 1010(fib);
12(10) = 8(10) + 3(10) + 1(10) = 10101(fib);
- 斐波那契编码:
- 就是把这个斐波那契进制数倒过来写,然后在末尾追加一个1。
一些模板
- 矩阵快速幂来求 f n % P n < M A X _ L L f_n\%P\quad n<MAX\_LL fn%Pn<MAX_LL:
/*
_ __ __ _ _
| | \ \ / / | | (_)
| |__ _ _ \ V /__ _ _ __ | | ___ _
| '_ \| | | | \ // _` | '_ \| | / _ \ |
| |_) | |_| | | | (_| | | | | |___| __/ |
|_.__/ \__, | \_/\__,_|_| |_\_____/\___|_|
__/ |
|___/
*/
#include<bits/stdc++.h>
#define show(x) std::cerr << #x << "=" << x << std::endl
using namespace std;
typedef long long ll;
const int MAX = 1e6+50;
const double EPS = 1e-10;
const long long MOD = 1e9+7;
typedef long long Elemtype;
const int SZ = 2;
struct Matrix{
Elemtype mat[SZ][SZ];
}M1,M2,M3;
Matrix mul(Matrix x,Matrix y,ll sz){
Matrix ans;
for(int i=0;i<sz;++i){
for(int j=0;j<sz;++j){
ans.mat[i][j]=0;
for(int k=0;k<sz;++k){
ans.mat[i][j]+=(x.mat[i][k]*y.mat[k][j])%MOD;
}
ans.mat[i][j]%=MOD;
}
}
return ans;
}
ll qpow(ll a, ll n)
{
ll ans = 1;
while(n){
if(n&1){
ans=ans*a%MOD;
}
n>>=1;
a=a*a%MOD;
}
return ans;
}
Matrix Create_Matrix(ll sz){
Matrix ans;
for(ll i=0;i<sz;++i)
for(ll j=0;j<sz;++j)
if(i==j)ans.mat[i][j]=1;
else ans.mat[i][j]=0;
return ans;
}
Matrix M_qpow(Matrix x,ll n,ll sz)
{
Matrix ans = Create_Matrix(sz);
while(n){
if(n&1){
ans = mul(ans,x,sz);
}
n>>=1;
x = mul(x,x,sz);
}
return ans;
}
int main()
{
ll n;
cin >> n;
M1.mat[0][0]=1; //构建2*2矩阵如下
M1.mat[0][1]=1; //1 1
M1.mat[1][0]=1; //1 0
M1.mat[1][1]=0;
M3 = M_qpow(M1,n-1,2); //方法挺多的,也可以 M1^n次方然后取[1][0]
cout << M3.mat[0][0];
return 0;
}
- 矩阵快速幂来求 f n % P n ≤ 1 0 30000000 f_n\%P\quad n\le 10^{30000000} fn%Pn≤1030000000:
// luogu-judger-enable-o2
#include<bits/stdc++.h>
#define LL long long
using namespace std;
const int N=1e4,S=30000001;
char s[S];
LL pi[N],k[N],P;
inline LL gcd(register LL n,register LL m){while(m^=n^=m^=n%=m); return n;}
inline LL lcm(register LL n,register LL m){return n/gcd(n,m)*m;}
struct matrix
{
LL a[3][3];
matrix(){memset(a,0,sizeof(a));}
matrix operator*(matrix x)
{
matrix s;
for(register int i=1;i<=2;i++) for(register int j=1;j<=2;j++) for(register int k=1;k<=2;k++) s.a[i][j]=(s.a[i][j]+a[i][k]*x.a[k][j])%P;
return s;
}
matrix operator^(register LL k)
{
matrix s=*this,e;
e.a[1][1]=e.a[2][2]=1;
for(;k;k>>=1,s=s*s) if(k&1) e=e*s;
return e;
}
};
inline int power(register LL n)
{
matrix a,ans;
a.a[1][1]=a.a[1][2]=a.a[2][1]=1,a.a[2][2]=0;
ans=a^n;
return ans.a[1][2];
}
inline LL Get(register LL p)
{
register int s=sqrt(p),tot=0;
for(register int i=2;i<=s;++i)
if(!(p%i))
{
pi[++tot]=i,k[tot]=1;
while(!(p%i)) p/=i,k[tot]*=i;
}
for(register int i=1;i<=tot;++i) k[i]/=pi[i];
if(p!=1) k[++tot]=1,pi[tot]=p;
for(register int i=1;i<=tot;++i)
if(pi[i]==2) k[i]*=3;
else if(pi[i]==3) k[i]*=5;
else if(pi[i]==5) k[i]*=20;
else if(pi[i]%5==1||pi[i]%5==4) k[i]*=pi[i]-1;
else k[i]*=(pi[i]+1)<<1;
register LL ans=k[1];
for(register int i=2;i<=tot;++i) ans=lcm(ans,k[i]);
return ans;
}
int main()
{
register int len;
register LL m,n=0;
scanf("%s%lld",s+1,&P),len=strlen(s+1);
if(P==1) return cout<<0,0;
m=Get(P);
for(register int i=1;i<=len;++i) n=((n<<3)+(n<<1)+(s[i]^48))%m;
if(!n) return cout<<0,0;
if(n==1) return cout<<1,0;
return cout<<power(n),0;
}
- 矩阵快速幂求广义斐波那契数
/*
_ __ __ _ _
| | \ \ / / | | (_)
| |__ _ _ \ V /__ _ _ __ | | ___ _
| '_ \| | | | \ // _` | '_ \| | / _ \ |
| |_) | |_| | | | (_| | | | | |___| __/ |
|_.__/ \__, | \_/\__,_|_| |_\_____/\___|_|
__/ |
|___/
*/
#define ll long long
using namespace std;
const int MAX = 2e5+50;
const ll MOD = 1e9+7;
ll P;
const int SZ = 2;
struct Matrix{
ll mat[SZ][SZ];
}M1,M2,M3;
Matrix mul(Matrix x,Matrix y,ll sz){
Matrix ans;
for(int i=0;i<sz;++i){
for(int j=0;j<sz;++j){
ans.mat[i][j]=0;
for(int k=0;k<sz;++k){
ans.mat[i][j]+=(x.mat[i][k]*y.mat[k][j])%P;
}
ans.mat[i][j]%=P;
}
}
return ans;
}
Matrix Create_Matrix(ll sz){
Matrix ans;
for(ll i=0;i<sz;++i)
for(ll j=0;j<sz;++j)
if(i==j)ans.mat[i][j]=1;
else ans.mat[i][j]=0;
return ans;
}
Matrix M_qpow(Matrix x,ll n,ll sz)
{
Matrix ans = Create_Matrix(sz);
while(n){
if(n&1){
ans = mul(ans,x,sz);
}
n>>=1;
x = mul(x,x,sz);
}
return ans;
}
int main()
{
ll p,q,a_1,a_2,n;
cin >> p >> q >> a_1 >> a_2 >> n >> P;
M1.mat[0][0]=p; //构建2*2矩阵如下
M1.mat[0][1]=1; //p 1
M1.mat[1][0]=q; //q 0
M1.mat[1][1]=0;
M3 = M_qpow(M1,n-2,2); //方法挺多的,也可以 M1^n次方然后取[1][0]
cout << (a_2 * M3.mat[0][0] % P + a_1 * M3.mat[1][0] % P) % P;
return 0;
}
/**
*/
一些应用题
- F(n+1) = number of tilings of a 2 X n rectangle by 2 X 1 dominoes.
证明:简单递推
- F(n+2) = number of binary sequences of length n that have no consecutive 0’s
ll f[MAX];
ll g[MAX];
int main()
{
int n;cin >> n;
f[0] = g[0] = 1;
for(int i = 1;i<=n;++i){
f[i] = g[i-1];
g[i] = f[i-1] + g[i-1];
show4(i,f[i],g[i],f[i]+g[i]);
}
return 0;
}
证明:f和g都是Fibonacci(第二数归)
- F(n+2) = number of subsets of {1,2,…,n} that contain no consecutive integers.
课后练习题(难?)
- (绿题)斐波那契:洛谷 P3938
- (黄题)求Fn%p:洛谷 P1962 n < 2 63 n< 2^{63} n<263
- (绿题)广义斐波那契数列:洛谷 P1349
- (蓝题)巨大的斐波那契数!:UVA11582
- (蓝题)斐波那契公约数:洛谷 P1306
下期预告(???)
- 斐波那契循环节(紫题)求Fn%p:洛谷P4000 n ≤ 1 0 30000000 n\le 10^{30000000} n≤1030000000
- 太多了!!!