题解:洛谷 P1720 月落乌啼算钱(斐波那契数列)

【题目来源】

洛谷:P1720 月落乌啼算钱(斐波那契数列) - 洛谷

【题目描述】

算完钱后,月落乌啼想着:“你 TMD 坑我,(以下用闽南语读)归粒靠杯靠亩诶,(以下用英读)是伊特游!”于是当爱与愁大神问多少钱时,月落乌啼说了一堆乱码。爱与愁大神说:“算了算了,我只问第 \(n\) 样菜价格多少?”月落乌啼写出了:

image

由于爱与愁大神学过编程,于是就用 \(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
posted @ 2026-02-16 15:21  团爸讲算法  阅读(2)  评论(0)    收藏  举报