斐波那契數列的齊肯多夫定理
斐波那契數列:1,2,3,5,8,13......
齊肯多夫定理:任何正整數都可以唯一地表示成若干個不連續的斐波那契數之和。
首先,存在性。
在上面的百科連結裡面,有數學歸納法的證明。
然後,唯一性。
可以用反證法加上無窮遞降法證明出來。
假設n是最小的有2種表示法的整數,其中一種表示中,最大的數是a,另外一種表述中,最大的數是b。
這裡需要一個簡單的結論:
引理:如果m是斐波那契數,那麼不超過m的所有斐波那契數中,選出若干個不連續的,能夠得到的最大的和剛好就是m-1
比如說,在1,2,3,5,8,裡面,最大的和就是1+3+8=12,剛好是13-1。
無論m是第奇數個斐波那契數,還是第偶數個,都是一樣的,證明很簡單,略。
所以,根據這個引理,a和b只能相等。
因為這是2種不同的表示法,所以n一定要比a大。
那麼n-a就有2種不同的表示法,即將上面的2個不同的表示法裡面刪掉相同的數a、b,得到的自然是不同的表示法。
這個,n-a小於n,與n的最小性矛盾!
所以,表示法是唯一的。
在斐波那契博弈裡面,用的就是這個定理。
相關推薦
HDU --- 4549 M斐波那契數列 【費馬小定理+矩陣快速冪】
傳送門 思路: 通過把前面幾項手推出來可以發現, 其次方項符合斐波那契數列, 又因為資料非常大, 所以就可以想到用矩陣快速冪去求得次方項, 需要注意的就是我們求的是次方, 而答案是取的某個數的該次方, 而a^b % p != a^(b%p) % p, 所以就
M斐波那契數列 (費馬小定理 + 二分快速冪 + 矩陣快速冪)
M斐波那契數列F[n]是一種整數數列,它的定義如下: F[0] = a F[1] = b F[n] = F[n-1] * F[n-2] ( n > 1 ) 現在給出a, b, n,你能求出F[n]的值嗎? Input 輸入包含多組測試
hdu 4549 M斐波那契數列(費馬小定理+矩陣快速冪)
F(n)=a^F(n-1)*b^F(n-2)%mod 因為a和b都與mod互素,因此用費馬小定理可以得到 F(n)=a^(f(n-1)%mod-1)*b^(f(n)%mod-1) %mod
斐波那契數列的齊肯多夫定理
斐波那契數列:1,2,3,5,8,13...... 齊肯多夫定理:任何正整數都可以唯一地表示成若干個不連續的斐波那契數之和。 首先,存在性。 在上面的百科連結裡面,有數學歸納法的證明。 然後,唯一
[luoguP1962] 斐波那契數列(矩陣快速冪)
truct ons 技術 pan opera http 快速冪 printf ble 傳送門 解析詳見julao博客連接 http://worldframe.top/2017/05/10/清單-數學方法-——-矩陣/ —&
Java 兔子問題(斐波那契數列)擴展篇
aik 第一個 truct func main target htm bre trace Java 兔子問題(斐波那契數列)擴展篇 斐波那契數列指的是這樣一個數列 0, 1, 1, 2,3, 5, 8, 13, 21, 34, 55, 89, 144, ...對於這個
斐波那契數列算法
string () lis temp -1 代碼 需要 cci key 今天研究了下Fibonacci算法,實現了遞歸和非遞歸兩種方式得到指定第n個的值。 代碼如下: 遞歸方式: public static int getFib(int a){ i
hdu 4549 M斐波那契數列(矩陣高速冪,高速冪降冪)
else if stdlib.h article 1.0 ostream void 我們 memset font http://acm.hdu.edu.cn/showproblem.php?pid=4549 f[0] = a^1*b^0%p,f[1] = a^0*b
vijos - P1543極值問題(斐波那契數列 + 公式推導 + python)
找到 span add gin python3 abi pri n) fill P1543極值問題 Accepted 標簽:[顯示標簽] 背景 小銘的數學之旅2。 描寫敘述 已知m、n為整數,且滿足下列兩個條件: ①
通過“”斐波那契數列“”學習函數遞歸
range else ret bsp 方法 res ... fbi 結果 斐波那契數列: f(0) = 0 f(1) = 1 f(2) = 1 f(3) = 2 f(4) = 3 f(5) = 8 .......f(n) = f(n - 2) + f(n - 1
[luoguP2626] 斐波那契數列(升級版)(模擬)
sub std [1] 斐波那契數 == cnblogs () ios git 傳送門 模擬 代碼 #include <cmath> #include <cstdio> #include <iostream>
斐波那契數列
python 練習 def bona(): while True: n = (input(‘你想打印幾個數的斐波那契數列:‘)) if not n.isdigit(): exit() a,b,m = 0,1,0
斐波那契數列的遞歸和非遞歸解法
err nbsp div clas pan 斐波那契 ret ror ++ //遞歸解法 function fib(n){ if(n < 1){ throw new Error(‘invalid arguments‘); }
斐波那契數列 x
技術分享 code clas 數列 tar eight 快速 記憶化 dev (一)通項公式 1 #include<cstdio> 2 #include<iostream> 3 #include<cmath> 4
劍指offer-矩形覆蓋-斐波那契數列(遞歸,遞推)
思考 -1 com light logs src images 數列 斐波那契數 class Solution { public: int rectCover(int number) { if(number==0 || num
斐波那契數列及青蛙跳臺階問題
step popu mtd bmi article 復雜度 rec one pen 題目1: 寫一個函數,輸入n,求斐波那契(Fibonacci)數列的第n項。 斐波那契(Fibonacci)數列定義例如以下: f(n)=?????0,1,f(n
C#斐波那契數列遞歸算法
oid args console nbsp bsp c# ring 數列 tel public static int Foo(int i) { if (i < 3) { retu
使用循環解決斐波那契數列Fibonacci sequence
log class 兔子 斐波那契數 知識 多少 oba enc 傳遞 1 # encoding:utf-8 2 ‘‘‘ 3 Created on 2017年8月7日 4 題目:古典問題:有一對兔子,從出生後第3個月起每個月都生一對兔子, 5 小兔子長到第三個月
C#斐波那契數列方法
.text 條件 class names linq ons program stat 傳遞 using System;using System.Collections.Generic;using System.Linq;using System.Text;using Sys
洛谷—— P1962 斐波那契數列
inline bsp line 100% get 滿足 opera freopen aps https://www.luogu.org/problem/show?pid=1962 題目背景 大家都知道,斐波那契數列是滿足如下性質的一個數列: • f(1) =