斐波那契数列

解析

利用基本运算规则,(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;
} 
原文地址:https://www.cnblogs.com/KyleDeng/p/9221810.html