10pts求调
查看原帖
10pts求调
398047
取名真难!楼主2024/12/7 16:14
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
#include<string>
#include<cmath>
using namespace std;
const int MAXN=1e5+5;
long long n,k,mod=1e9+7;
struct node{
	long long a[105][105];
	node(){
		memset(a,0,sizeof(0));
	}
	
}ans,jc;
node operator*(const node &x,const node &y){
		node z;
		for(int i=1;i<=n;i++){
			for(int j=1;j<=n;j++){
				for(int k=1;k<=n;k++){
					z.a[i][j]=(z.a[i][j]+(x.a[i][k]*y.a[k][j])%mod)%mod;
				}
			}
		}
		return z;
	}
int main(){
	cin>>n>>k;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			cin>>jc.a[i][j];
		}
	}
	for(int i=1;i<=n;i++) ans.a[i][i]=1;
	while(k){
		if(k%2==1){
			ans=ans*jc;
		}
		jc=jc*jc;
		k>>=1;
	}
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			cout<<ans.a[i][j]<<" ";
		}
		cout<<endl;
	}
	return 0;                       
}
/*

*/
2024/12/7 16:14
加载中...