zoukankan      html  css  js  c++  java
  • POJ 3070 矩阵mob

    .

    矩阵高速幂想法与快速幂相同

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #define MOD 10000
    using namespace std;
    struct matrix {
        int mat[2][2];
        matrix() {      //构造函数与结构体同名 若写作init()函数 需调用 
            memset(mat,0,sizeof(mat));
        }
    };
    
    matrix mul(matrix A , matrix B) {
        matrix C;
        for(int i=0;i<=1;i++) {
            for(int j=0;j<=1;j++) {
                for(int k=0;k<=1;k++) {
                    C.mat[i][j]=(C.mat[i][j]+A.mat[i][k]*B.mat[k][j])%MOD;
                }
            }
        }
        return C;
    }
    
    matrix powmul(matrix A ,int n) {
        matrix B;  //初始化为单位阵 
        B.mat[0][0]=1;
        B.mat[1][1]=1;
        while(n>=1) {
            if(n&1) {
                B=mul(B,A);
            }
            A=mul(A,A);    //自身幂次     
            n/=2;
        }
        return B;
    }
    
    
    int main()
    {
        
        int n;
        while(~scanf("%d",&n))
        {
            if(n==-1) break;
            matrix A; 
            A.mat[0][0]=A.mat[0][1]=A.mat[1][0]=1;
            A.mat[1][1]=0;
            A=powmul(A,n);
            cout<<A.mat[0][1]<<endl;
        }
        
        return 0;    
    } 

     

  • 相关阅读:
    Android购物商城
    Android简易计算器
    安卓第四周作业
    第一次安卓作业
    十五周课后习题
    第十三周作业
    十三周上机练习
    第十二周作业
    第十二周练习
    11周上机作业(5.14)
  • 原文地址:https://www.cnblogs.com/LinesYao/p/5452036.html
Copyright © 2011-2022 走看看