求条
查看原帖
求条
1009027
stils楼主2024/2/23 17:29

完全自己打的(没有用任何高级玩意),10pts其他TLE,求调

#include<bits/stdc++.h>
using namespace std;
const long long N=105;
long long n,k;
struct matrix{
	long long m[N][N];
}a;
matrix Multiplication(matrix x,matrix y){
	matrix z;
	memset(z.m,0,sizeof z.m);
	for(long long i=1;i<=n;i++){
		for(long long j=1;j<=n;j++){
			for(long long p=1;p<=n;p++){
				z.m[i][j]+=x.m[i][p]*y.m[p][j]%1000000007;
				z.m[i][j]%=1000000007; 
			}
		}
	}
	return z;
}
matrix MatrixFastPower(matrix arr,long long p){
	if(p==1)return arr;
	if(p%2==1){
		matrix res=Multiplication(MatrixFastPower(arr,p/2),MatrixFastPower(arr,p/2));
		res=Multiplication(res,arr);
		return res;
	}
	else{
		matrix res=Multiplication(MatrixFastPower(arr,p/2),MatrixFastPower(arr,p/2));
		return res;
	}
}
int main(){
	ios::sync_with_stdio(false);
	cin>>n>>k;
	for(long long i=1;i<=n;i++){
		for(long long j=1;j<=n;j++){
			cin>>a.m[i][j];
		}
	}
	if(k==0){
		for(long long i=1;i<=n;i++){
			for(long long j=1;j<=n;j++){
				if(i==j)cout<<1<<' ';
				else cout<<0<<' ';
			}
			cout<<endl;
		}
		return 0;
	}
	matrix ans=MatrixFastPower(a,k);
	for(long long i=1;i<=n;i++){
		for(long long j=1;j<=n;j++){
			cout<<ans.m[i][j]<<' ';
		}
		cout<<endl;
	}
	return 0;
} 
2024/2/23 17:29
加载中...