目录
牛客_分斐波那契凤尾
解析代码
题目要求输出斐波那契数列的第n项,最容易写的方法就是用循环求出每一项了。而它要求的是后六位,那么我们只需要存储后六位就行了。先求斐波那契数列在100000以内的每一项的后六位,然后需要的时候直接输出数组里的对应值即可。以下代码用通常的循环法解决。
#include <iostream>
using namespace std;
const int N = 100007;
int f[N];
int main()
{
f[1] = 1, f[2] = 2;
int flag = -1; // 记录第一个大于六位数的i
for(int i = 3; i < N; ++i)
{
f[i] = f[i - 1] + f[i - 2];
if(f[i] >= 999999)
{
f[i] %= 1000000;
if(flag == -1)
flag = i;
}
}
int n = 0;
while(cin >> n)
{
if(n >= flag)
printf("%06d\n", f[n]);
else
cout << f[n] << endl;
}
return 0;
}