• 矩阵乘法+快速幂求斐波那契


    #include<iostream>
    #include<algorithm>
    #include<cmath>
    using namespace std;
    int n,m;
    int a[2][2]={1,1,1,0};
    int b[2][2]={1,0,0,1};
    void jzcf(int a[2][2],int b[2][2])
    {
        int i,j,k;
        int c[2][2];
        for(i=0;i<2;i++)
        {
            for(j=0;j<2;j++)
            {
                c[i][j]=0;
                for(k=0;k<2;k++)
                {
                    c[i][j]=(c[i][j]+a[i][k]*b[k][j]);
                }
            }
        }
        for(i=0;i<2;i++)
        {
            for(j=0;j<2;j++)
            {
                b[i][j]=c[i][j];
            }
        }
    }
    void ksm(int n)
    {
        if(n==0)
        {
            cout<<0<<endl;
        }
        else
        {
            n--;
            while(n)
            {
                if(n%2==1)
                {
                    jzcf(a,b);
                }
                jzcf(a,a);
                n/=2;
            }
            cout<<b[0][0]<<endl;
        }
    }
    int main()
    {
    
        while(cin>>n)
        {
            ksm(n);
            a[0][0]=a[0][1]=a[1][0]=b[0][0]=b[1][1]=1;
            a[1][1]=b[0][1]=b[1][0]=0;
    
        }
        return 0;
    }

    大神博客:

    母函数http://blog.csdn.net/xuzengqiang/article/details/7464337

    http://www.cnblogs.com/dongsheng/archive/2013/06/02/3114073.html

     原理:

    f(n+1)    0                  1      1              f(n)         0           1         1             1            1            f(n-1)        0        1        1               f(1)    0

                              =                      *                           =                      *                          *                         =                  *   ' ' '*

    f(n)        0                  1       0             f(n-1)      0           1         0             1            0            f(n-1)        0        1        0               f(0)     1

  • 相关阅读:
    128. 最长连续序列( 数组背诵题吧)
    310. 最小高度树 (拓扑排序 bfs)
    797. 所有可能的路径(图的遍历)
    sql关于group by和max函数一起使用的坑(同理,求部门最高工资)
    计算正逆序
    886. 可能的二分法(dfs bfs二部图判断)
    java实现RSA加密
    读取logback日志
    logback进阶
    词法分析笔记2
  • 原文地址:https://www.cnblogs.com/beige1315402725/p/4921832.html
Copyright © 2020-2023  润新知