本地AC,洛谷IDE全部RE求助
查看原帖
本地AC,洛谷IDE全部RE求助
114187
ubec楼主2022/11/27 13:03

如题

#include<iostream>
#include<cstdio>
using namespace std;
typedef long long ll;
const ll p = 1e9 + 7;
struct matrix
{
	ll val[101][101];
	int n;
	matrix operator * (matrix t)
	{
		matrix c;
		c.n = n;
		for(int i=1;i<=n;++i)
			for(int j=1;j<=n;++j)
				for(int k=1;k<=n;++k)
					c.val[i][j] = (c.val[i][j] + (this->val[i][k] * t.val[k][j]) % p) % p; 
		return c;
	}
	void print()
	{
		for(int i=1;i<=n;++i)
		{
			for(int j=1;j<=n;++j)
				cout<<val[i][j] % p<<" ";
			cout<<endl;
		}
	}
	matrix init()
	{
		for(int i=1;i<=n;++i)
			val[i][i] = 1;
	}
}A;
matrix quick_power(matrix A, ll k)
{
	matrix base = A, ans;
	ans.n = A.n;
	ans.init();
	while(k)
	{
		if(k&1) ans = ans * base;
		base = base * base;
		k >>= 1;
	}
	return ans;
}
int n;
ll k;
int main()
{
	ios::sync_with_stdio(false);
	cin>>n>>k;
	for(int i=1;i<=n;++i)
		for(int j=1;j<=n;++j)
			cin>>A.val[i][j];
	A.n = n;
	quick_power(A,k).print();	
}
2022/11/27 13:03
加载中...