比较经典的一道斐波那契数列的模版题,原题中给了一个很复杂的公式(也就是下面这个),但是实际上题目跟它毛关系没有……(所以放这个公式干什么)
\[F_n=\dfrac{\left(\frac{1+\sqrt{5}}{2}\right)^n-\left(\frac{1-\sqrt{5}}{2}\right)^n}{\sqrt{5}} \]看见题解去了有很多人都在证明,要么是纯计算的,要么是开挂直接度娘的,可是题目上的括号里不是已经告诉我们这道题目是求斐波那契数列吗?
OK,那么我们话不多说,直接进入今天的代码环节!# 月落乌啼算钱(斐波那契数列)
代码
#include<bits/stdc++.h>
using namespace std;
long long f[1000] = {0, 1, 1};
int main() {
int n;
cin >> n;
for(int i = 3; i <= n; ++ i) {
f[i] = f[i - 1] + f[i - 2];
}
cout << f[n] << ".00";
return 0;
}
代码的第三行定义了一个数组f并且把钱前面两项定义成了1和1(0是占位置的),紧接着我们就进入main函数,main函数中也是十分熟练的定义并输入常年稳居C位的变量n,括号中的i被我们定义成了3(因为前面三项已经定义好了),在循环内部是一个简单的斐波那契额数列求和的公式,这里不讲了,应该不会有人不会吧
这道题目其实还有一个递归的做法,也是相当简单的,但是因为那时候本蒟蒻脑子突然短路了,所以递归最后一个数据被Hack了(虽然我不知道出题人是故意的还是有意的),大家可以自己思考一下