[蓝桥杯][2019年第十届真题]Fibonacci 数列与黄金分割
题目描述
Fibonacci 数列是非常著名的数列:
F[1] = 1,
F[2] = 1,
对于 i > 3,F[i] = F[i − 1] + F[i − 2]
Fibonacci 数列有一个特殊的性质,前一项与后一项的比值,F[i]/F[i + 1], 会趋近于黄金分割。
为了验证这一性质,给定正整数 N,请你计算 F[N]/F[N + 1],并保留 8 位 小数。
输入
一个正整数 N。(1 ≤ N ≤ 2000000000)
输出
F[N]/F[N + 1]。答案保留 8 位小数。
样例
样例输入
2
样例输出
0.50000000
思路:
打表出奇迹。
代码:
const int N = 55;
ll f[N];
int main() {
f[1] = f[2] = 1;
for (int i = 3; i < N; i ++) {
f[i] = f[i - 1] + f[i - 2];
}
ll n; cin >> n;
if (n >= 50) puts("0.61803399");
else printf("%.8lf\n", f[n] * 1.0 / f[n + 1]);
return 0;
}