矩阵快速幂模板

来源:互联网 发布:java集合框架详解 编辑:程序博客网 时间:2024/05/29 18:39

作用:计算特殊的递推式;

难点:构建矩阵递推式;


代码:

//用二维vector来表示矩阵typedef vector<int> vec;typedef vector<vec> mat;typedef long long LL;const int MOD = 1000;//计算A*Bmat mul(mat &A,mat &B)//返回mat类型;{     mat C(A.size(),vec(B[0].size()));//临时二维vector,自动初始化为0,,数组形式不是全局变量要初始化memset;     for(int i=0;i<A.size();i++)           for(int k=0;k<B.size();k++)                  if(A[i][k]!=0)//对于矩阵较多0;                  for(int j=0;j<B[0].size();j++)                         C[i][j]=(C[i][j]+A[i][k]*B[k][j])%MOD;      return C;}//计算A^nmat pow(mat A,LL n)//返回mat类型;{      mat B(A.size(),vec(A[0].size()));//临时二维vector;       for(int i=0;i<A.size();i++)               B[i][i]=1;       while(n>0)//快速幂       {               if(n&1)   B=mul(B,A);               A=mul(A,A);               n>>=1;        }        return B;}


常用一般矩阵后续更新...



原创粉丝点击