WA爆0!
查看原帖
WA爆0!
205852
KamisatO__Ayaka楼主2021/5/19 13:28
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int MAXN=108;
const ll MOD=1e9+7;
int n;
ll k;
ll read(){
	int f=1,s=0;
	char ch=getchar();
	while(!isdigit(ch)){
		if(ch=='-')f=-1;
		ch=getchar();
	}
	while(isdigit(ch)){
		s=(s<<3)+(s<<1)+ch-'0';
		ch=getchar();
	}
	return f*s;
}
struct matrix{
	ll a[MAXN][MAXN];
	matrix(){
		memset(a,0,sizeof(a));
	}
	inline void build(){
		for(int i=1;i<=n;i++)a[i][i]=1;
	}
}a;
matrix operator*(const matrix &x,const matrix &y){
	matrix 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][k]=(z.a[i][k]+x.a[i][j]*y.a[j][k]%MOD)%MOD;
	return z;
}
int main(){
	n=read(),k=read();
	for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)a.a[i][j]=read();
	matrix ans;
	ans.build();
	while(k>0){
		if(k&1)ans=ans*a;
		a=a*a;
		k>>=1;
	}
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			printf("%d ",ans.a[i][j]);
		}
		putchar('\n');
	}
	return 0;
}

求助!

2021/5/19 13:28
加载中...