UPDATE 2023-08-16:更新标签、样例输入输出
UPDATE 2023-08-15:更新代码,去除文章无用部分
Description
斐波列契数列(Faibonacci)0,1,1,2,3,5,8,13,21,34……求此数列第n项 。
即: Fibonacci数列是这样定义的:
F[0]=0;
F[1]=1;
F[n]=F[n-1]+F[n-2], for n>1。
Fibonacci数列的增长速度是惊人的。当n=47时,F[47]=2971215073(>2^31)。由于数列的值增长太快,对于n,你只需要输出F[n]%2147483647。
Input
样例输入一
0
样例输入二
1
Output
样例输出一:
0
样例输出二:
1
HINT
0<=n<=100000000
代码(数组、动态规划)
#include<iostream>
using namespace std;
long long a[100000000];
int main()
{
int n;
cin>>n;
a[0]=0,a[1]=1;
for(int i=2;i<=n;i++)
a[i]=(a[i-1]+a[i-2])%2147483647;
cout<<a[n];
return 0;
}
代码(滚动数组优化dp)
#include<bits/stdc++.h>
using namespace std;
int main()
{
long long a[3],n;
a[0]=0,a[1]=1;
cin>>n;
if(n<2)
{
cout<<a[n];
return 0;
}
while(n--)
{
a[2]=(a[0]+a[1])%2147483647;
a[0]=a[1];
a[1]=a[2];
}
cout<<a[2];
return 0;
}