数学之美——斐波那契数(1)

来源:互联网 发布:2017ipad视频软件 编辑:程序博客网 时间:2024/04/26 19:24

      斐波那契数的来源:伦纳德·斐波那契著的Liber Abaci包含这这样一个习题:“在一年的时间里,一对兔子可以繁衍出多少对兔子?”为解决这个问题,我们被告知:假定每对兔子每个月生育一对兔子,新的一对兔子在一个月之后具有生育能力;其次,这些兔子都不死去。一个月后,将有两对兔子;两个月后,将有三对,下一个月原来的一对以及在头一个月生下的一对都将生出一对来,一次总共将有5对;等等。

    因此引出斐波那契数;0,1,1,2,3,5,8,13,21,34······

    定义:以Fn来表示这个序列的数,并将其定义为F0=0;F1=1;Fn+2=Fn+1 +Fn,n≥0;

    斐波那契数在一道ACM题目中的妙解:

题目如下:

        有一列相当长的格子(格子数不超过10000),某些格子里面放了棋子(棋子总是不超过10的9次方)。如果格子里面有棋子,就可以拿走其中的一颗,同时在这个格子左边两个格子里面各放一颗。

        如果连续两个格子里面都有棋子,就可以分别从两个格子中各拿走一颗,之后在它们右边的格子里面放入一颗。

        现在的任务是,给定初始状态,要求使用以上操作,使得:

1,每个格子之多只有1颗棋子。

2,相邻的两个格子不能都有棋子。

        不难发现,题目给出的两个操作是可逆的。那么我们可以为每个格子一个量化的权值,例如第i个格子的价值为Fi,那么Fi必须满足;Fi+1=Fi+Fi-1。这岂不是斐波那契数列?这样整个问题的初始状态和目标状态的总价值相同。利用这一点,再根据斐波那契数列的一个结论,任意自然数n的斐波那契分解是唯一的。就可以求出最后棋子的分布。想不到吧,斐波那契数列还可以这样用。神奇吧。

 

原创粉丝点击