zoukankan      html  css  js  c++  java
  • 矩阵乘法、矩阵快速幂模板

    我们学校大一不开线代,多捞啊。做题时碰到了一些诸如矩阵快速幂、向量混合积之类需要线代知识的问题就很难受。

    自己问同学+百度稍微了解了一点,先写一下矩阵乘法和矩阵快速幂的模板,普适性还是太低,以后慢慢改吧。

    注意要输入矩阵的行列和元素。

     1 struct mat{
     2     int r,c;          //row,行数;column,列数
     3     ll m[10][10];    //矩阵 以下写法适用于下标从0开始 到时候行列数要具体分析
     4     void clear(){    //置零
     5         for(int i=0;i<r;i++) memset(m[i],0,sizeof(m[i]));
     6     }
     7 };
     8 
     9 mat matmult(mat m1,mat m2){    //仅当m1.c==m2.r时可以相乘,相乘时可看情况加模运算
    10     mat tmp;
    11     tmp.r=m1.r;        //计算结果的行数与m1行数相等,列数与m2列数相等
    12     tmp.c=m2.c;
    13     int i,j,k;
    14     for(i=0;i<tmp.r;i++)
    15         for(j=0;j<tmp.c;j++){
    16             tmp.m[i][j]=0;
    17             for(k=0;k<m1.c;k++)
    18                 tmp.m[i][j]+=((m1.m[i][k]*m2.m[k][j])%mod)%mod;
    19         }
    20 
    21     return tmp;
    22 }
    23 
    24 mat matpow(mat a,ll n){
    25     mat ans=a; ans.clear();
    26     for(int i=0;i<ans.r;i++) ans.m[i][i]=1;//置为单位矩阵
    27     while(n){
    28         if(n&1) ans=matmult(ans,a);
    29         a=matmult(a,a);
    30         n>>=1;
    31     }
    32     return ans;
    33 }
  • 相关阅读:
    Java并发编程
    详细分析Java中断机制[转]
    JAVA多线程面试题
    读书就读经典,经典技术书大全
    Linux top命令
    博客园博客修改模板的CSS
    Redis工业生产应用场景
    Redis作者谈Redis应用场景
    服务器如何判断访问用户来自哪个国家地区?
    Windows10锁屏壁纸提取
  • 原文地址:https://www.cnblogs.com/noobimp/p/10342481.html
Copyright © 2011-2022 走看看