矩阵快速幂

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


建议看一下本博客的快速幂取模:点击打开链接,原理都一样,看懂那个,这个速度就会

#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;
}

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

矩阵快速幂_第1张图片

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

可以看看下面2个地址:

点击打开链接

点击打开链接



你可能感兴趣的:(矩阵快速幂)