题解:洛谷 P1720 月落乌啼算钱(斐波那契数列)
【题目来源】
【题目描述】
算完钱后,月落乌啼想着:“你 TMD 坑我,(以下用闽南语读)归粒靠杯靠亩诶,(以下用英读)是伊特游!”于是当爱与愁大神问多少钱时,月落乌啼说了一堆乱码。爱与愁大神说:“算了算了,我只问第 \(n\) 样菜价格多少?”月落乌啼写出了:

由于爱与愁大神学过编程,于是就用 \(1\) 分钟的时间求出了 \(F_n\) 的结果。月落乌啼为此大吃一惊。你能学学爱与愁大神求出 $F_n $ 的值吗?
【输入】
一行一个自然数 \(n\)。
【输出】
只有 \(1\) 行一个实数 \(F_n\),保留两位小数。
【输入样例】
6
【输出样例】
8.00
【算法标签】
《洛谷 P1720 月落乌啼算钱》 #模拟# #数学# #递推# #斐波那契,Fibonacci# #洛谷原创#
【代码详解】
#include <bits/stdc++.h> // 包含标准库头文件(万能头文件)
#include <math.h> // 包含数学函数库(使用sqrt和pow函数)
using namespace std; // 使用标准命名空间
/**
* 主函数 - 程序入口
* @return 程序执行状态码(0表示成功)
*/
int main()
{
int n; // 定义变量:斐波那契数列的项数n
double t = sqrt(5); // 定义变量:√5的值
double f; // 定义变量:存储计算结果
cin >> n; // 输入要计算的斐波那契数列项数
// 计算黄金分割比例和其共轭数
double a = (1 + t) / 2; // 黄金分割比例 (1+√5)/2
double b = (1 - t) / 2; // 共轭比例 (1-√5)/2
// 使用Binet公式计算第n项斐波那契数
f = (pow(a, n) - pow(b, n)) / t;
// 输出结果,保留两位小数
printf("%.2f", f);
return 0; // 程序正常结束
}
【运行结果】
6
8.00
浙公网安备 33010602011771号