神秘 UB 求调,已疯
查看原帖
神秘 UB 求调,已疯
1268478
時空楼主2025/6/28 12:40
#include <bits/stdc++.h>

#define FstIO ios::sync_with_stdio(0), cin.tie(0), cout.tie(0)
#define pii pair <ll, ll>
#define pb push_back
#define mtp make_tuple
#define mem(a, v) memset(a, v, sizeof a)

using namespace std; 

using ll = long long; 
using ull = unsigned long long;
using ld = long double;

const ll N = 3e2 + 5, M = 4e3 + 2;
const ll inf = 1e18;
const ld eps = 1e-6;

const ll mod = 1e9 + 7;

ll n, k;

struct matrix
{
	ll A[N][N];
	void build()
	{
		for (ll i = 1; i <= n; ++ i )
			for (ll j = 1; j <= n; ++ j ) 
				A[i][j] = 0;
	}
	void init()
	{
		for (ll i = 1; i <= n; ++ i ) A[i][i] = 1;
	} 
} ;

matrix operator * (const matrix &x, const matrix &y) 
{
	matrix t; t.build();
	for (ll i = 1; i <= n; ++ i )
		for (ll j = 1; j <= n; ++ j )
			for (ll k = 1; k <= n; ++ k )
				t.A[i][j] = (t.A[i][j] + x.A[i][k] * y.A[k][j]) % mod;
	return t;
}

matrix qpow(matrix x, ll p)
{
	matrix s; s.build(); s.init();
	
	while (p)
	{
		if (p & 1) s = s * x;
		x = x * x;
		p >>= 1;
	}
	return s;
}

signed main()
{
//	freopen(".in", "r", stdin);
//	freopen(".out", "w", stdout);
	
	FstIO;
	
	cin >> n >> k;
	matrix p; p.build();
	for (ll i = 1; i <= n; ++ i )
		for (ll j = 1; j <= n; ++ j )
			cin >> p.A[i][j];

	p = qpow(p, k);
	for (ll i = 1; i <= n; ++ i )
	{
		for (ll j = 1; j <= n; ++ j )
			cout << p.A[i][j] << ' ';
		cout << '\n';
	}
	
	return 0;
	
	cout.flush();
}
2025/6/28 12:40
加载中...