#include <iostream>
#include <cmath>
using namespace std;
int main()
{
// Fibonacci(n) = (((1+√5)/2)^n-((1-√5)/2)^n)/√5 ≈ ((1+√5)/2)^n/√5
// log(Fibonacci(n)) ≈ n*log((1+√5)/2)-log(√5)
// 999*log(10) < n*log((1+√5)/2)-log(√5)
// n > (999*log(10)+log(√5))/log((1+√5)/2)
cout << ceil((999*log(10.0)+log(5.0)/2.0)/log((1.0+sqrt(5.0))/2.0)) << endl;
return 0;
}
http://projecteuler.net/problem=25 [Answer:4782]
本文介绍了一种使用对数估算斐波那契数长度的方法,并通过C++代码实现计算第一个长度达到1000位的斐波那契数对应的序号。

被折叠的 条评论
为什么被折叠?



