10pts求助
查看原帖
10pts求助
1140668
___W___Z___L___PVP楼主2024/12/28 16:30
#include <bits/stdc++.h>
using namespace std;
#define int long long
const int mod = 1000000007;
int n, b;

struct rode {
	int k[1009][1009];
} a, sum;

rode ppp(rode x) {
	for (int i = 1; i <= n; i++) {
		for (int j = 1; j <= n; j++) {
			for (int m = 1; m <= n; m++) {
				x.k[i][j] = (x.k[i][j] + x.k[i][m] * a.k[m][j]) % mod;
			}
		}
	}
	return x;
}

signed main() {
	cin >> n >> b;
	for (int i = 1; i <= n; i++) {
		for (int j = 1; j <= n; j++) {
			cin >> a.k[i][j];
			if (i == j)
				sum.k[i][j] = 1;
		}
	}
	while (b > 0) {
		if (b % 2 != 0)
			sum = ppp(sum);
		a = ppp(a);
		b = b >> 1;
	}
	for (int i = 1; i <= n; i++) {
		for (int j = 1; j <= n; j++) {
			cout << sum.k[i][j] % mod << ' ';
		}
		cout << '\n';
	}

	return 0;
}
2024/12/28 16:30
加载中...