0分求助
查看原帖
0分求助
482610
Mortidesperatslav楼主2023/7/18 10:28
#include<bits/stdc++.h>
#define int long long
using namespace std;
struct juzhen{
	public:
		int a[201][201];
};
juzhen p;
juzhen juzhenchengfa(juzhen x,juzhen y){//It is zhouly
	juzhen res;
	memset(res.a,0,sizeof(res.a));
	for(register int i=0;i<2;i++)
		for(register int j=0;j<2;j++)
			for(register int k=0;k<2;k++)
				res.a[i][j]=(res.a[i][j]+(x.a[i][k]*y.a[k][j])%1000000007)%1000000007;
	return res;		
}
juzhen juzhenkuaisumi(juzhen x,int y){
	juzhen res;
	res.a[0][0]=-1;
	while(y>0){
		if(y&1){
			if(res.a[0][0]==-1)res=x;
			else res=juzhenchengfa(res,x);
		}
		x=juzhenchengfa(x,x);
		y>>=1;
	}
	return res;
}
signed main(){
	int n,k;
	cin>>n>>k;
	for(register int i=0;i<n;i++)
		for(register int j=0;j<n;j++){
			cin>>p.a[i][j];
			p.a[i][j]%=1000000007;
		}
	juzhen ans=juzhenkuaisumi(p,k);
	for(register int i=0;i<n;i++){
		for(register int j=0;j<n;j++)cout<<ans.a[i][j]%1000000007<<" ";
		cout<<"\n";
	}
}
2023/7/18 10:28
加载中...