10分求调
查看原帖
10分求调
806299
tyyxbx楼主2024/11/26 14:00
#include<bits/stdc++.h>
using namespace std;
const int N=101;
const int mod=1000000007;
struct matrix{
	int m[N][N];
};
matrix operator * (const matrix& a,const matrix& b){
	matrix c;
	memset(c.m,0,sizeof(c.m));
	for(int i=0;i<N;i++){
		for(int j=0;j<N;j++){
			for(int k=0;k<N;k++){
				c.m[i][j]=(c.m[i][j]+a.m[i][k]*b.m[k][j])%mod;
			}
		}
	}
	return c;
}
matrix ans;
void pow_matrix(matrix a,long long n){
	memset(ans.m,0,sizeof(ans.m));
	for(int i=0;i<N;i++) ans.m[i][i]=1;
	while(n){
		if(n&1) ans=ans*a;
		a=a*a;
		n>>=1;
	}
}
int main(){
	int n,k;
	matrix A;
	cin>>n>>k;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++) cin>>A.m[i][j];
	}
	pow_matrix(A,k);
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++) cout<<ans.m[i][j]%mod<<" ";
		cout<<endl;
	}
	return 0;
}
2024/11/26 14:00
加载中...