题目:3233
题意:给出一个方阵,求幂级数和,并对M取余
题解:采用矩阵快速幂,利用等比矩阵的性质
AC代码:
#include<iostream>
using namespace std;
#define MAXN 61
int n, k, m;
int A[MAXN][MAXN], B[MAXN][MAXN];
void mult(int a[MAXN][MAXN], int b[MAXN][MAXN]) {
int c[MAXN][MAXN] = { 0 };
for (int i = 0; i < n; i++)
for (int j = 0; j < n; j++)
for (int k = 0; k < n; k++) {
c[i][j] += a[i][k] * b[k][j];
c[i][j] %= m;
}
for (int i = 0; i < n; i++)
for (int j = 0; j < n; j++)
a[i][j] = c[i][j];
}
int main() {
cin >> n >> k >> m;
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
cin >> A[i][j];
A[i][i + n] = A[i + n][i + n] = 1;
B[i][i] &#