用一维数组计算4*3和3*4矩阵的乘积,用c++

2025-05-15 13:22:21
推荐回答(1个)
回答1:

#include 
#include 
#define LL long long 
using namespace std;

  const LL mo=1e9+7;
  
  LL qpow(LL bas,int powe){
      LL ret=1;
      for (;powe;bas*=bas,bas%=mo){
        if (powe&1) ret*=bas,ret%=mo;
      powe=powe>>1;    
    }
    return(ret);
  }
    
  struct matrix{
      LL a[601][601],tmp[601][601];
      int n,m;
      
      void cpy(matrix&b){
        n=b.n;m=b.m;
      for (int i=1;i<=n;i++)    
        for (int j=1;j<=m;j++)
          a[i][j]=b.a[i][j];
        }
      
      void mul(matrix &b){
      for (int i=0;i<=n;i++) 
        for (int j=0;j<=b.m;j++) 
          tmp[i][j]=0;
        
      for (int i=0;i<=n;i++)
        for (int k=0;k<=m;k++)
          if (a[i][k]) 
            for (int j=0;j<=b.m;j++)
              tmp[i][j]+=a[i][k]*b.a[k][j]%mo,tmp[i][j]%=mo;
        
      for (int i=0;i<=n;i++)
        for (int j=0;j<=b.m;j++)
          a[i][j]=tmp[i][j];
      m=b.m;
    }
  };

以上实现了内置乘法函数的矩阵结构体