zoukankan      html  css  js  c++  java
  • 一个简单的矩阵乘法(快速幂)

      //求FIB的第n项
    1
    #include <iostream> 2 #include <vector> 3 #include <cstdio> 4 5 using namespace std; 6 #define LL long long 7 8 typedef vector<int> vec; 9 typedef vector<vec> mat; 10 11 mat mul(mat& A, mat& B) 12 { 13 mat C ( A.size(),vec(B[0].size())); 14 15 for(int i=0;i<A.size();i++) 16 { 17 for(int k = 0;k<B.size();k++) 18 { 19 for(int j = 0;j<B[0].size();j++) 20 { 21 C[i][j] = C[i][j] + A[i][k]*B[k][j] ; 22 } 23 } 24 } 25 return C; 26 } 27 28 mat pow(mat A, LL n) 29 { 30 mat B( A.size(),vec(A.size())); 31 32 for(int i=0;i<A.size();i++) 33 { 34 B[i][i] =1; 35 } 36 while( n>0) 37 { 38 if( n&1) B = mul(B,A); 39 A = mul(A,A); 40 n>>=1; 41 } 42 return B; 43 44 45 } 46 47 int main() 48 { 49 LL n ; 50 cin>>n; 51 mat A ( 2, vec(2)); 52 A[0][0] =1; A[0][1] = 1; 53 A[1][0] = 1; A[1][1] = 0; 54 A = pow( A, n); 55 printf("%d ",A[1][0]); 56 return 0; 57 }
  • 相关阅读:
    高斯消元法求逆矩阵
    二分法
    Boost库
    sorts
    排序算法_HeapSort
    粒子系统之概述_20140101
    新年祝福!_20140101
    思维_逆向的魅力2_20131229
    思维_逆向的魅力_20131229
    编码能力的提升?_20131228
  • 原文地址:https://www.cnblogs.com/doubleshik/p/3537666.html
Copyright © 2011-2022 走看看