浅谈斐波那契数列

9 篇文章 0 订阅

写这个类型博客的目的就是想总结一下某个专题的知识点,方便以后比赛前复习,由于太菜,如有错误,还请斧正。

首先斐波那契数列的定义在这就不讲了,不了解的请自行百度。

先来讲讲斐波那契数列的几种常见算法:

一、递归法(O(2^n))几乎没用

二、迭代法(O(n)) 对于查询次数*max(n)<=1e8有用

三、矩阵快速幂(O(log(n)))基本就靠他了

typedef unsigned long long ll;
const int mod=1e9+7;
typedef vector<ll> vec;
typedef vector<vec> mat;
mat mul(mat &a,mat &b)
{
    mat c(a.size(),vec(b[0].size()));
    for(int i=0; i<2; i++)
    {
        for(int j=0; j<2; j++)
        {
            for(int k=0; k<2; k++)
            {
                c[i][j]+=a[i][k]*b[k][j];
                //c[i][j]%;
            }
        }
    }
    return c;
}
mat pow(mat a,ll n)
{
    mat res(a.size(),vec(a.size()));
    for(int i=0; i<a.size(); i++)
        res[i][i]=1;//单位矩阵;
    while(n)
    {
        if(n&1) res=mul(res,a);
        a=mul(a,a);
        n/=2;
    }
    return res;
}
ll solve(ll n)
{
    mat a(2,vec(2));
    a[0][0]=1;
    a[0][1]=1;
    a[1][0]=1;
    a[1][1]=0;
    a=pow(a,n);
    return a[0][1];//也可以是a[1][0];
}

四、通项公式法 虽然快但不一定准确,有精度问题

F(n)=\frac{1}{\sqrt{5}}[\frac{(1+\sqrt{5})^{n}}{2}-\frac{(1-\sqrt{5})^{n}}{2}]

fib(n) = pow(((1 + sqrt(5)) / 2.0),n) / sqrt(5) - pow(((1 -sqrt(5)) / 2.0),n) / sqrt(5));

接下来是我做题目过程中遇到的以及网上查到的关于斐波那契数列的一些小性质

1、F(gcd(a,b))=gcd(F(a),F(b))

2、\sum F(n)=F(n+2)-1

3、F(1)+F(3)+......+F(2n-1)=F(2n)

4、F(2)+F(4)+F(6)+......+F(2n) =F(2n+1)-1

5、if(F(x)%k==0) F(x*i)%k=0

6、[F(0)]^2+[F(1)]^2+......+[F(n)]^2=F(n)*F(n+1)

7、F(m+n)=F(m-1)*F(n-1)+F(m)*F(n)

8、[F(n+1)]^2=(-1)^n+F(n)*F(n+2)

9、F(2n-1)=[F(n)]^2-[F(n-2)]^2

10、3F(n)=F(n+2)+F(n-2)

11、在模的情况下,斐波那契数列会出现循环,可以打表找出

 

可能以后还会有加减

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值