首页 > 代码库 > 矩阵模版(新)
矩阵模版(新)
#define repf(i,a,b) for(int i=(a);i<=(b);i++)using namespace std;typedef long long ll;const int N = 0;const int SIZE = 4;int l, MOD;struct Mat{ ll v[SIZE][SIZE]; // value of matrix Mat() { memset(v, 0, sizeof(v)); } void init(ll _v) { repf (i, 0, SIZE) v[i][i] = _v; }};Mat operator * (Mat a, Mat b) { Mat c; repf (i, 0, SIZE - 1) { repf (j, 0, SIZE - 1) { c.v[i][j] = 0; repf (k, 0, SIZE - 1) { c.v[i][j] += (a.v[i][k] * b.v[k][j]) % MOD; c.v[i][j] %= MOD; } } } return c;}Mat operator ^ (Mat a, ll k) { Mat c; c.init(1); while (k) { if (k&1) c = a * c; a = a * a; k >>= 1; } return c;}
矩阵模版(新)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。