mat 加速模板
Posted goto_1600
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mat 加速模板相关的知识,希望对你有一定的参考价值。
垃圾vector nmsl
struct mat
static const int md=1e9+7;
ll a[4][4];
mat()
memset(a,0,sizeof(a));
mat(int x)
memset(a,0,sizeof(a));
a[0][0]=a[1][1]=a[2][2]=a[3][3]=1;
ll* operator[](int x)
return a[x];
mat operator+(mat r)
mat res;
for (int i=0; i<4; ++i)
for (int j=0; j<4; ++j)
res[i][j]=(a[i][j]+r[i][j])%md;
return res;
mat operator-(mat r)
mat res;
for (int i=0; i<4; ++i)
for (int j=0; j<4; ++j)
res[i][j]=(a[i][j]-r[i][j]+md)%md;
return res;
mat operator*(mat r)
mat res;
for(int i=0; i<4; i++)
for(int j=i; j<4; j++)
for(int k=i; k<=j; k++)
res[i][j]=add((res[i][j]+ a[i][k]*r[k][j] )%md,md);
return res;
;
以上是关于mat 加速模板的主要内容,如果未能解决你的问题,请参考以下文章