题目链接:https://www.luogu.com.cn/problem/P1720

题目描述:

给你一个公式 ,求对应的 \(F_n\) 。

解题思路:

首先不难想象这是一个斐波那契数列,我们可以通过找规律等方式来求解得到答案。

但是这里想说一下的还是这个公式的推导过程。

斐波那契数列的数学公式是通过 数列特征方程 来进行求解的。

首先,对于斐波那契数列,我们知道 \(f_{n+2} = f_{n+1} + f_{n}\)

我们不妨设等比数列的公比为 \(q\) ,则

\[q^2 \times f_n = q \times f_n + f_n
\]

约去 \(f_n\) 得:

\[q^2 - q - 1 = 0
\]

得:\(q_1 = \frac{1 + \sqrt{5}}{2},q_2 = \frac{1 - \sqrt{5}}{2}\)

所以 \(f_n\) 是 \(q_1^n\) 和 \(q_2^n\) 的一个线性组合,

我们假设 \(f_n = A \times q_1^n + B \times q_2^n\) ,带入 \(f_1 = f_2 = 1\) ,得:

\[f_n = \frac{\sqrt{5}}{5}(\frac{1 + \sqrt{5}}{2})^{n} - \frac{\sqrt{5}}{5}(\frac{1 - \sqrt{5}}{2})^{n}
\]

在了解这个思想之后,我们还是按照递推公式计算斐波那契数列数列比较方便。

实现代码如下:

#include <bits/stdc++.h>
using namespace std;
long long f[50];
int n;
int main() {
cin >> n;
f[1] = f[2] = 1;
for (int i = 3; i <= n; i ++) f[i] = f[i-1] + f[i-2];
cout << f[n] << ".00" << endl;
return 0;
}

洛谷P1720 月落乌啼算钱 题解 斐波那契数列/特征方程求解的更多相关文章

  1. 洛谷P1720 月落乌啼算钱 题解

    题目传送门 初看题目,好难.再看一次,探索规律,发现这就是有名的斐波那契数列. F[i]=f[i-1]+f[i-2] SO 代码很简单,貌似要开long long,又貌似不用开. #include&l ...

  2. 洛谷——P1720 月落乌啼算钱

    题目背景 (本道题目木有以藏歌曲……不用猜了……) <爱与愁的故事第一弹·heartache>最终章. 吃完pizza,月落乌啼知道超出自己的预算了.为了不在爱与愁大神面前献丑,只好还是硬 ...

  3. 洛谷P1720 月落乌啼算钱

    目背景 (本道题目木有以藏歌曲……不用猜了……) <爱与愁的故事第一弹·heartache>最终章. 吃完pizza,月落乌啼知道超出自己的预算了.为了不在爱与愁大神面前献丑,只好还是硬着 ...

  4. DP思想在斐波那契数列递归求解中的应用

    斐波那契数列:1, 1, 2, 3, 5, 8, 13,...,即 f(n) = f(n-1) + f(n-2). 求第n个数的值. 方法一:迭代 public static int iterativ ...

  5. 关于Haskell计算斐波那契数列的思考

    背景 众所周知,Haskell语言是一门函数式编程语言.函数式编程语言的一大特点就是数值和对象都是不可变的,而这与经常需要对状态目前的值进行修改的动态规划算法似乎有些"格格不入", ...

  6. erlang的斐波那契数列

    [递归和循环] 题目: 大家都知道斐波那契数列,现在要求输入一个整数N,请输出斐波那契数列的第N项,以及前N项. 如:N <=39 下面是斐波那契数列的实现: -module(feibo). - ...

  7. 洛谷P1962 斐波那契数列题解

    题目背景 大家都知道,斐波那契数列是满足如下性质的一个数列: • f(1) = 1 • f(2) = 1 • f(n) = f(n-1) + f(n-2) (n ≥ 2 且 n 为整数) 题目描述 请 ...

  8. 洛谷P1962 斐波那契数列【矩阵运算】

    洛谷P1962 斐波那契数列[矩阵运算] 题目背景 大家都知道,斐波那契数列是满足如下性质的一个数列: • f(1) = 1 • f(2) = 1 • f(n) = f(n-1) + f(n-2) ( ...

  9. 斐波那契数列的通项公式x+洛谷P2626x

    #include<cstdio> #include<iostream> #include<cmath> using namespace std; int main( ...

随机推荐

  1. 重置Mysql自增列的开始序号

    ALTER TABLE  TableName AUTO_INCREMENT = 5; 代表重新从5开始(包括5)

  2. hdu 1532 Drainage Ditches(最大流模板题)

    Drainage Ditches Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) ...

  3. get_magic_quotes_gpc() PHP转义的真正含义

    如何正确的理解PHP转 义是一个初学者比较困扰的问题.我们今天为大家简要的讲述了PHP转义的具体含义,希望有所帮助.PHP转义一直困扰着我, 今天认真的看了一下PHP手册, 终于解决了. 在PHP中默 ...

  4. rdlc报表部署

    1)在D盘创建目录ReportViewer 2)打开运行界面,运行如下的执行 copy C:\Windows\assembly\gac_msil\Microsoft.ReportViewer.Comm ...

  5. Pytorch 多 GPU 并行处理机制

    Pytorch 的多 GPU 处理接口是 torch.nn.DataParallel(module, device_ids),其中 module 参数是所要执行的模型,而 device_ids 则是指 ...

  6. 2019-8-15-win10-edge-打开闪退问题

    title author date CreateTime categories win10 edge 打开闪退问题 lindexi 2019-08-15 08:53:22 +0800 2019-8-1 ...

  7. java 多线程安全问题的解决方法

    三种方法: 同步代码块: synchronized(obj) { //obj表示同步监视器,是同一个同步对象 /**..... TODO SOMETHING */ }   同步方法 格式: 在方法上加 ...

  8. Laravel基本使用、生成Cookie、返回视图、JSON/JSONP、文件下载及重定向

    https://yq.aliyun.com/ziliao/23889 1.Response篇 1.1 基本响应 最基本的HTTP响应只需在路由闭包或控制器动作中返回一个简单字符串即可,但是具体业务逻辑 ...

  9. Codeforces Round #178 (Div. 2)

    A. Shaass and Oskols 模拟. B. Shaass and Bookshelf 二分厚度. 对于厚度相同的书本,宽度竖着放显然更优. 宽度只有两种,所以枚举其中一种的个数,另一种的个 ...

  10. VMware 注册码

    VMware 12 Pro 永久许可证激活密钥 5A02H-AU243-TZJ49-GTC7K-3C61NVF5XA-FNDDJ-085GZ-4NXZ9-N20E6UC5MR-8NE16-H81WY- ...