求调(为什么样例都不过啊)
查看原帖
求调(为什么样例都不过啊)
1121718
Nk96321楼主2024/2/26 09:45
#include<iostream>
#include<cstdio>
using namespace std;
#define int long long 
int a[1001][1001],ans[1001][1001],c[1001][1001],n,k;
const int mod=1e9+7;
void wlj1()
{
	for(int i=1;i<=n;++i)
	{
		for(int j=1;j<=n;++j)
		{
			c[i][j]=0;
			for(int k=1;k<=n;++k)
			{
				c[i][j]+=(a[i][k]*a[k][j])%mod;
			}
		}
	}
	for(int i=1;i<=n;++i)
	{
		for(int j=1;j<=n;++j)
		a[i][j]=c[i][j]%mod;
	}
	return;
}
void wlj2()
{
	for(int i=1;i<=n;++i)
	{
		for(int j=1;j<=n;++j)
		{
		c[i][j]=0;
		for(int k=1;k<=n;++k)
		{
			c[i][j]+=(ans[i][k]*ans[k][j])%mod;
		}
	    }
	}
	for(int i=1;i<=n;++i)
	{
		for(int j=1;j<=n;++j)
		{
			ans[i][j]=c[i][j]%mod;
		}
	}
	return;
}
signed main()
{
	cin>>n>>k;
	for(int i=1;i<=n;++i)
	{
		ans[i][i]=1;
		for(int j=1;j<=n;++j)
		cin>>a[i][j];
	}
	while(k)
	{
		if(k&1)
		wlj2();
		wlj1();
		k/=2;
	}
	for(int i=1;i<=n;++i)
	{
		for(int j=1;j<=n;++j)
		{
			cout<<ans[i][j]<<" ";
		}
		puts(" ");
	}
	return 0;
}
2024/2/26 09:45
加载中...