斐波拉契数列
题目描述
给定正整数n,求斐波那契数列的第n项F(n)。
令F(n)表示斐波那契数列的第n项,它的定义是:
当n=1时,F(n)=1;
当n=2时,F(n)=1;
当n>2时,F(n)=F(n−1)+F(n−2)。
大数据版:斐波拉契数列-大数据版
输入描述
一个正整数n(1≤n≤104)。
输出描述
斐波那契数列的第n项F(n)。
由于结果可能很大,因此将结果对10007取模后输出。
样例1
输入
1
输出
1
解释
边界定义:F(1)=1
样例2
输入
3
输出
2
解释
F(3)=F(2)+F(1)=1+1=2
样例3
输入
5
输出
5
题解:
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin>>n;
vector<int> f(n+1, 0); //如果是f(n, 0)就会错误
f[1] = f[2] = 1;
for(int i=3;i<=n;i++){
f[i] = (f[i-1] + f[i-2]) % 10007;
}
cout<<f[n];
return 0;
}
#include <cstdio>
const int MOD = 10007;
const int MAXN = 10000 + 1;
int fib[MAXN];
int main() {
int n;
scanf("%d", &n);
fib[1] = fib[2] = 1;
for (int i = 3; i <= n; i++) {
fib[i] = (fib[i - 1] + fib[i - 2]) % MOD;
}
printf("%d", fib[n]);
return 0;
}