zoukankan      html  css  js  c++  java
  • POJ 3070 矩阵快速幂

    题意:
    让你用矩阵来找Fibonacci数
    思路:
    不用矩阵快速幂会TLE,只能学一下啦
    (其实也不难)

    // by SiriusRen
    #include <cstdio>
    using namespace std;
    struct matrix{
        int a[2][2];
        void init(){a[0][0]=a[1][0]=a[0][1]=1;a[1][1]=0;}
    };
    matrix multiplication(matrix a,matrix b){
        matrix c;
        for(int i=0;i<2;i++)
            for(int j=0;j<2;j++){
                c.a[i][j]=0;
                for(int k=0;k<2;k++)
                    c.a[i][j]+=a.a[i][k]*b.a[k][j];
                c.a[i][j]%=10000;
            }
        return c;
    }
    void pow(int x){
        if(x==-1){puts("0");return;}
        matrix ans,s;ans.init();s.init();
        while(x>=1){
            if(x&1)ans=multiplication(ans,s);
            s=multiplication(s,s);
            x>>=1;
        }
        printf("%d
    ",ans.a[0][1]);
    }
    int main(){
        int k;
        while(scanf("%d",&k)&&k!=-1)pow(k-1);
    }

    这里写图片描述

  • 相关阅读:
    Collection
    DP
    JVM
    算法 *-* 并查集Union-Find(连通性)
    log4j
    log4j
    第254期:宠物如何导航回家
    第254期:宠物如何导航回家
    多线程
    多线程
  • 原文地址:https://www.cnblogs.com/SiriusRen/p/6532392.html
Copyright © 2011-2022 走看看