斐波那契数列

解析

利用基本运算规则,(a + b) % p = (a % p + b % p) % p ,考虑一个一个递推。写一个flag表示当前求到第几个数,以falg为基准,flag+1为下一个数,flag为当前的数,flag-1为上一个数,

得出递推公式:shulie[flag+1]=shulie[flag]+shulie[flag-1]

因为第1第2个%100000007都是1,所以不用管,但是向后的话需要处理一下。于是从第三个开始每一个结果都%100000007,以达成最后的结果是(a % p + b % p) % p。 

代码

#include<bits/stdc++.h>
using namespace std;
int shulie[100005];
int n;
int main()
{
    cin>>n;
    shulie[1]=1;
    shulie[2]=1;
    int flag=2;
    while(flag!=n)
    {
        shulie[flag+1]=shulie[flag]+shulie[flag-1];
        shulie[flag+1]=shulie[flag+1]%1000000007;//(a%p+b%p)%p=(a+b)%p
        flag++;
    }
    cout<<shulie[n]<<endl;
} 

 

posted @ 2018-06-24 21:26  前排吃瓜  阅读(162)  评论(0编辑  收藏  举报