斐波那契数列

解析

利用基本运算规则,(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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值