summaryrefslogtreecommitdiff
path: root/content/math/matrixPower.cpp
blob: d80dac6728e887a47007e7267467800f05f4b8b7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
vector<mat> pows;

void precalc(mat m) {
	pows = {m};
	for (int i = 0; i < 60; i++) pows.push_back(pows[i] * pows[i]);
}

auto calc(ll b, vector<ll> v) {
	for (ll i = 0; b > 0; i++) {
		if (b & 1) v = pows[i] * v;
		b >>= 1;
	}
	return v;
}