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

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

时间限制: 1Sec 内存限制: 128MB 提交: 2182 解决: 578

题目描述

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

 

题目解析

1. 运行超时 73分

#include <iostream>
using namespace std;

int main(int argc, char** argv) {
	int n;
	cin >> n;
	double a = 1, b = 1, c; 
	for(int i = 0; i < n-2 + 1; i++){
		c = a + b;
		a = b;
		b = c;
	}
	double res = a/b;
	printf("%.8f", res);
	
	return 0;
}

2. 正确 100分

其实相比于第一个代码段,只增加了一个判断,当n  > 20 时输出为固定值

#include <iostream>
using namespace std;

int main(int argc, char** argv) {
	int n;
	cin >> n;
	if(n < 20){
		double a = 1, b = 1, c; 
		for(int i = 0; i < n-2 + 1; i++){
			c = a + b;
			a = b;
			b = c;
		}
		double res = a/b;
		printf("%.8f", res);		
	}else{
		cout << "0.61803399" << endl; 
	}
	
	return 0;
}

从下面图可以看出,当i 在18之后就已经趋于固定值了。那么这个题意当中提到了黄金分割,由此可以想到当n 趋于一个很大的值时,黄金分割比的前多少位肯定是固定的。 

(虽然一开始我也没想到是这样。。。不过也算是积累经验了)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值