求助!全WA
查看原帖
求助!全WA
355521
rainbow_star楼主2022/1/29 12:21
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
typedef long long ll;
const ll mod=1000000007; 
ll n,k;
inline ll rd()
{
	ll s=0,w=1;
	char x='x';
	while(x<'0'||x>'9'){x=getchar();if(x=='-')w=-1;}
	while(x>='0'&&x<='9'){s=(s*10+(x^48))%1000000007;x=getchar();}
	return s*w;
}
struct node
{
	ll a[105][105];
	node()
	{
		memset(a,0,sizeof a);
	}
}a,ans;
node mul(node x,node y)
{
	node z;
	ll i,j,l;
	for(i=1;i<=n;i++)
		for(j=1;j<=n;j++)
			for(l=1;l<=n;l++)	
				z.a[i][j]=(z.a[i][j]+x.a[i][l]*y.a[l][j]%mod)%mod;
	return z;
}
int main()
{
	n=rd();
	k=rd();
	ll i,j,l;
	for(i=1;i<=n;i++)
		for(j=1;j<=n;j++)
		{
			a.a[i][j]=rd();
			ans.a[i][i]=1;//单位矩阵 
		}
	while(k!=0)
	{
		if(k&1==1)
			ans=mul(ans,a);
		a=mul(a,a);
		k>>=1;
	}
	for(i=1;i<=n;i++)
	{
		for(j=1;j<=n;j++)
			printf("%lld ",ans.a[i][j]);
		printf("\n");
	}
	return 0;
}
2022/1/29 12:21
加载中...