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

      斐波那契数的来源:伦纳德·斐波那契著的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的斐波那契分解是唯一的。就可以求出最后棋子的分布。想不到吧,斐波那契数列还可以这样用。神奇吧。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值