HDOJ 1568-Fibonacci
原题地址:http://acm.hdu.edu.cn/showproblem.php?pid=1568
题意概述:求斐波那契数列第n项的前四位数,n <= 100000000。
思路分析:直接计算的结果很大,超出了int,long long 和double的表示范围,只能用取对数的方式缩小。
斐波那契数列有通项公式:

当数字很大时,最后一项对精度影响很小,可以近似为

简记为

要求的是f(n)的前四位数,即:(log以10为底,下同)

又可以表示为

而由上面通项公式可得:

代入,故所求结果为

的整数部分。
算法考点:初等数学,基本数学函数的使用。
提交情况:WA 2,自己定义的常数精度不够,
AC 1,改用sqrt()计算根号5,完美通过。
经验收获:学会了log10,floor等数学函数的使用。
完整代码:
