您的位置:首页 > 其它

矩阵乘法及矩阵快速幂运算

2018-02-15 10:04 246 查看
设矩阵为n*n(n<N)的矩阵,代码如下:
const int N = 100;
void matmul(long long a[]
, long long b[]
, long long n)
{

long long temp

;
memset(temp, 0, sizeof(temp));
for (long long i = 1; i <= n; i++)
for (long long j = 1; j <= n; j++)
for (long long k = 1; k <= n; k++)
temp[i][j] += a[i][k] * b[k][j];
for (long long i = 1; i <= n; i++)
for (long long j = 1; j <= n; j++)
a[i][j] = temp[i][j];
}

void quick_pow(long long a[]
,  long long n)
{
long long ans

;
for (int i = 0; i < N; i++)
for (int j = 0; j < N; j++)
ans[i][j] = 1;
while (n != 0)
{
if (n & 1)matmul(ans, a, N);
n /= 2;
matmul(a, a, N);
}

for (int i = 0; i < N; i++)
for (int j = 0; j < N; j++)
a[i][j] = ans[i][j];
return;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: