zoukankan      html  css  js  c++  java
  • C++-POJ3070-Fibonacci-[矩阵乘法][快速幂]

     1 #include <cstdio>
     2 struct Matrix{int a[5][5];};
     3 const int N=2,MOD=1e4;
     4 Matrix A,B,O,I;
     5 Matrix Mul(Matrix A,Matrix B){
     6     Matrix C=O;
     7     for(int i=1;i<=N;i++)
     8         for(int j=1;j<=N;j++)
     9             for(int k=1;k<=N;k++)
    10                 C.a[i][j]=(C.a[i][j]+A.a[i][k]*B.a[k][j])%MOD;
    11     return C;
    12 }
    13 Matrix Pow(Matrix A,int n){
    14     Matrix B=I;
    15     for(;n;n>>=1,A=Mul(A,A))if(n&1)B=Mul(B,A);
    16     return B;
    17 }
    18 int main(){
    19     for(int i=1;i<=2;i++)for(int j=1;j<=2;j++)O.a[i][j]=0,I.a[i][j]=(i==j);
    20     A.a[1][1]=0,A.a[1][2]=1;
    21     A.a[2][1]=1,A.a[2][2]=1;
    22     int n;
    23     while(scanf("%d",&n)){
    24         if(n==-1)break;
    25         B=Pow(A,n+1),printf("%d
    ",B.a[1][1]);
    26     } 
    27     return 0;
    28 } 
    ~~Jason_liu O(∩_∩)O
  • 相关阅读:
    第十二周作业
    第十一周作业
    第十一次上机作业
    第十次上机作业
    第九周上机作业
    第八周作业
    第八次上机练习
    第七周作业
    第八周
    第六周作业
  • 原文地址:https://www.cnblogs.com/JasonCow/p/12363510.html
Copyright © 2011-2022 走看看