你可能不知道斐波那契数列是什么
但你一定见过此类数据
1 1 2 3 5 8 13 21 34
这类数据的题目在算法练习中我们也遇到过
第n个数等于它前两个数的和
我们通常的办法是打表,然后给你n再取其对应的值输出
其实它是有一个公式可以直接求的
这个公式仅适用于是1 1 2 3这样开始的
如果数列是1 2 3 5这样开始的
我们需要在输入的n后面再加1,来求值
如下面这个code
#include <bits/stdc++.h>
using namespace std;
int main()
{
double n;
int ans;
while(cin >> n)
{
n++;
ans=(pow((1+sqrt(5))/2,n)-pow((1-sqrt(5))/2,n))/sqrt(5);
cout << ans << endl ;
}
return 0;
}
需要注意的是,往往一个题目不会直接一个通项公式就让你ac
这类题目更常见的是要你结合高精度使用