http://acm.hdu.edu.cn/showproblem.php?pid=1568
题目大意:求第N项斐波那契数列值的前四位,N很大
网上看的资料还算是好理解的:
(1)我们要知道斐波那契数列的通项公式:F[N]=(1/√5) * [((1+√5)/2)^N-((1-√5)/2)^N].
(2)对数log的强悍(以10为底):对两边取对数
logF[N]=-0.5*log5+log [((1+√5)/2)^N-((1-√5)/2)^N].
我们知道当N小于21的时候,斐波那契的数值不超过四位,而当N超过21时,((1-√5)/2)^N的值已经趋向于0了,我们可以不管 这项。那么原式就可以化为:
logF[N]=-0.5*log5+N*log (1+√5)/2
把后面的记为K=-0.5*log5+N*log (1+√5)/2
那么 10^K=F[N];!!!
举个例子: 10^2.3=199.5262314.......
10^0.3=1.995262314.......
这样具体的数字很直观,对映到 10^K=F[N],取K的小数部分后,10^K就变为了科学计数的形式,那么此时你要取多少位就可以取 多少位,就像要是你知道了10^0.3,那么你想得到1.995262314......的几位就几位!!