상세 컨텐츠

본문 제목

행렬곱

카테고리 없음

by cr7ronaldo 2022. 2. 9. 00:20

본문

#include <bits/stdc++.h>

#define begin begin()
#define end end()
#define fir first
#define sec second;
#define FOR3(i, c, n) for(int i = c; i < n; i++)
#define FOR4(i, c, n) for(int i = c; i <= n; i++)
#define FOR(i, n) FOR3(i, 0,  n)
#define FOR1(i, n) FOR4(i, 1, n)
#define FOR2(it, vt) for(auto &it : vt)

using namespace std;
using ll = long long;
using vl = vector<ll>;
using pll = pair<ll, ll>;
using qll = queue<ll>;
using vp = vector<pll>;
using qp = queue<pll>;
using pqll = priority_queue<ll>;
using pqp = priority_queue<pll>;

using pqr = priority_queue<ll, vl, greater<ll>>;
using pqpr = priority_queue<pll, vp, greater<pll>>;
const ll mod = 1e9 + 7;
inline void init_setting() { ios_base::sync_with_stdio(0); cin.tie(NULL); cout.tie(NULL); }

vector<vl> operator * (vector<vl> a1, vector<vl> a2)
{
vector<vl> res(a1.size(), vl(a2[0].size(), 0));
FOR(i, a1.size())
{
FOR(j, a2[0].size())
{
FOR(k, a2.size())
{
res[i][j] = (res[i][j] + a1[i][k] * a2[k][j]) % mod;
}
}
}
return res;
}