矩阵二分乘法
1.非递归的矩阵二分乘法
#include <stdio.h>
#include <stdlib.h>
#define MOD 10000
#define LENGTH 2
//矩阵p*q,并将结果存放到p中
void matrix_mul(int p[LENGTH][LENGTH],int q[LENGTH][LENGTH])
{
int t[LENGTH][LENGTH]={0}; //中间数组
for (int i=0;i<LENGTH;++i) //计算两个矩阵相乘
{
for (int j=0;j<LENGTH;++j)
{
for (int k=0;k<LENGTH;++k)
{
t[i][j]+=p[i][k]*q[k][j];
}
}
}
//将结果放在矩阵p中
for (int i=0;i<LENGTH;++i)
{
for (int j=0;j<LENGTH;++j)
{
p[i][j]=t[i][j]%MOD; //防止出现大数据
}
}
}
//计算矩阵p的n次方,使用二分矩阵乘法,n为矩阵相乘的次数
void matrix_cal(int p[LENGTH][LENGTH],int n)
{
int t[LENGTH][LENGTH]=