zoukankan      html  css  js  c++  java
  • AC日记——斐波那契数列 洛谷 P1962

    斐波那契数列

    思路:

      矩阵快速幂;

    来,上代码:

    #include <cstdio>
    #include <cstring>
    #include <iostream>
    #include <algorithm>
    
    using namespace std;
    
    #define mod 1000000007
    
    struct MatrixType {
        long long ai[3][3];
        
        void mem()
        {
            for(int i=0;i<3;i++)
            {
                for(int j=0;j<3;j++) ai[i][j]=0;
            }
        }
    };
    
    long long n;
    
    MatrixType mul(MatrixType a,MatrixType b)
    {
        MatrixType res;
        res.mem();
        for(int i=1;i<=2;i++)
        {
            for(int j=1;j<=2;j++)
            {
                for(int v=1;v<=2;v++) res.ai[i][j]=(res.ai[i][j]+(a.ai[i][v]*b.ai[v][j])%mod)%mod;
            }
        }
        return res;
    }
    
    long long poww(long long mi)
    {
        MatrixType pos,mii;
        pos.mem(),mii.mem();
        pos.ai[1][1]=1,pos.ai[1][2]=0;
        pos.ai[2][1]=0,pos.ai[2][2]=0;
        mii.ai[1][1]=1,mii.ai[1][2]=1;
        mii.ai[2][1]=1,mii.ai[2][2]=0;
        while(mi>0)
        {
            if(mi&1) pos=mul(pos,mii);
            mi=mi>>1,mii=mul(mii,mii);
        }
        return pos.ai[1][1];
    }
    
    int main()
    {
        scanf("%lld",&n);
        cout<<poww(--n)%mod;
        return 0;
    }
  • 相关阅读:
    pandas
    CTC Loss原理
    CTC 的工作原理
    Demystifying JavaScript Closures, Callbacks and IIFEs
    Css compatibility
    Flexbox——快速布局神器
    centos wordpress
    Encog
    D3js
    Lucene学习
  • 原文地址:https://www.cnblogs.com/IUUUUUUUskyyy/p/6766776.html
Copyright © 2011-2022 走看看