先看一下矩阵与矩阵相乘的代码,两个矩阵A,B,只有A的列数和B的行数相等时才能相乘,如A[X][Y]   *  B[Y][Z]    =   C[X][Z];,写个例子:

矩阵快速幂_i++

建议看一下本博客的快速幂取模,原理都一样,看懂那个,这个速度就会

#include <iostream>
#include <cstring>

using namespace std;

int a[100][100],b[100][100],c[100][100];

int main()
{
int i,j,k;
int x,y,z;
while(cin>>x>>y>>z &&x)
{
memset(c,0,sizeof(c));
for(i=0; i<x; i++)
{
for(j=0; j<y; j++)
{
cin>>a[i][j];
}
}
for(i=0; i<y; i++)
{
for(j=0; j<z; j++)
{
cin>>b[i][j];
}
}
for(i=0; i<x; i++)//控制相乘的行数
{
for(j=0; j<z; j++)//第二个矩阵有几列,就得乘几次
{
for(k=0; k<y; k++)//得出每个c[i][j]的值
{
c[i][j] += a[i][k] * b[k][j];// 第一次循环完,c[0][0] = 0 + 1 * 0 + 1 * 1
}
}
}
for(i=0; i<x; i++)
{
for(j=0; j<z; j++)
{
cout<<c[i][j]<<" ";
}
cout<<endl;
}
}
return 0;
}

下面介绍一种特殊的矩阵:单位矩阵

矩阵快速幂_i++_02

很明显的可以推知,任何矩阵乘以单位矩阵其值不改变