0分求调
查看原帖
0分求调
728741
ayst0001楼主2024/8/8 16:44
#include <bits/stdc++.h>
using namespace std;
const long long N=1e2+10;
const long long P=1e9+7;
struct mat{
	long long a[N][N];
	mat(){
		memset(a,0,sizeof(a));
	}
};
long long n,k;
mat operator* (mat &a,mat &b){
	mat c;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			for(int k=1;k<=n;k++){
				c.a[i][j]+=(a.a[i][k]*b.a[k][j])%P;
			}
		}
	}
	return c;
}
mat st(mat x,int l){
	l--;
	mat ans=x;
	while(l>0){
		if(l&1) ans=ans*x;
		x=x*x;
		l=l>>1;
	}
	return ans;
}
mat a,b,c;
int main( ){
	cin>>n>>k;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			cin>>a.a[i][j];
		}
	}
	b=st(a,k);
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			cout<<b.a[i][j]<<" ";
		}
		cout<<endl;
	}
	
	return 0;
}
2024/8/8 16:44
加载中...