首页 > 其他 > 详细

斐波那契数列

时间:2018-06-24 22:02:48      阅读:250      评论:0      收藏:0      [点我收藏+]

技术分享图片

解析

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!