目录
牛客_客似云来(简单斐波那契)
解析代码
老样子,先准备好斐波那契的数组,然后遍历那一段数组,求出他们的和即可。而第80项斐波那契数列是一个17 位数,所以需要用long long来解决问题。然而这个题还有另一个更有意思的思路。斐波那契数列的的前n项和其实是有一个很有意思的公式,公式推导在这里斐波那契数列的前N项和_斐波那契数列前n项和-CSDN博客,根据文章我们能知道,斐波那契数列的前n项和,就是第n+2项的值减1,例如前10项的和143,就是第12项的144 - 1的结果。所以,我们如果我们要第n项到第m项的和,那么只要求出前m项的和,减去前n - 1项的和,就能得到结果了。例如要求第3项到第5项的和,我们就只需要用前5项的和减去前2项的和,而公式中的减一在这个过程中抵消掉了,也就是结果直接就是第7项的值减去第4 项的值,这样我们在操作的时候就更简单了。就数值而言,第7项是13,第4项是3,差值是10,而2+3+5也是10,结果是正确的。
#include <iostream>
using namespace std;
#define int long long
const int N = 88;
int f[N];
signed main()
{
f[1] = 1, f[2] = 1;
int left = 0, right = 0;
for(int i = 3; i <= N; ++i)
{
f[i] = f[i - 1] + f[i - 2];
}
while(cin >> left >> right)
{
int res = 0;
for(int i = left; i <= right; ++i)
{
res += f[i];
}
cout << res << endl;
}
return 0;
}