#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
typedef long long ll;
const int MOD=1e9+7;
ll n,m,i,j,k;
struct Matrix{
ll a[105][105];
Matrix operator *(const Matrix &b)const{
Matrix ret;
for (int i=1;i<=n;i++)
for (int j=1;j<=n;j++){
ret.a[i][j]=0;
for (int k=1;k<=n;k++)
ret.a[i][j]+=a[i][k]*b.a[k][j],ret.a[i][j]%=MOD;
}
return ret;
}
}a;
Matrix ksm(Matrix a,long long x){
Matrix ret,k;k=a;
ret=a;x--;
for (;x;x>>=1,k=k*k)
if (x&1) ret=ret*k;
return ret;
}
int main(){
cin>>n>>k;
for (i=1;i<=n;i++)
for (j=1;j<=n;j++)
cin>>a.a[i][j];//读入矩阵
a=ksm(a,k);
for (i=1;i<=n;i++){
for (j=1;j<n;j++) cout<<a.a[i][j]<<" ";
cout<<a.a[i][n]<<endl;
}
return 0;
}
矩阵快速幂板子
最新推荐文章于 2023-06-22 16:37:05 发布