首页 > 其他 > 详细

[蓝桥杯][2019年第十届真题]Fibonacci 数列与黄金分割

时间:2020-03-25 09:23:41      阅读:200      评论:0      收藏:0      [点我收藏+]

题目描述

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


思路

这里有一个坑,如果是按照普通的Fibonacci来写的话,会超时。题目说到“会趋近于黄金分割”,于是打印下来输入N=100的情况,可以看到在N=20左右处收敛于0.61803399

技术分享图片

 

 

 

代码

 1 #include<iostream>
 2 #include<iomanip>
 3 using namespace std;
 4 /*
 5 
 6 */
 7 
 8 int main()
 9 {
10     int n;
11     cin >> n;
12     int F[20];
13     F[0] = 1;
14     F[1] = 1;
15     for (int i = 2; i<20; i++) {
16         F[i] = F[i-1] + F[i-2];
17     }
18     if (n < 20) {
19         double res = double(F[n - 1]) / double(F[n]);
20         cout << setiosflags(ios::fixed) << setprecision(8);
21         cout << res;
22     }
23     else
24         cout << "0.61803399";
25     return 0;
26 }

 

[蓝桥杯][2019年第十届真题]Fibonacci 数列与黄金分割

原文:https://www.cnblogs.com/hikarie/p/12563632.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!