struct Matrix
{
lint a[53][53];
Matrix()
{
memset(a, 0, sizeof(a));
for(int i = 1; i <= 52; i++)
{
a[i][i] = 1LL;
}
}
};
Matrix operator * (const Matrix & m1, const Matrix & m2)
{
Matrix m;
for(int i = 1; i <= siz; i++)
{
for(int j = 1; j <= siz; j++)
{
m.a[i][j] = 0;
for(int k = 1; k <= siz; k++)
{
m.a[i][j] = (m.a[i][j] + (m1.a[i][k] * m2.a[k][j]) % mod) % mod;
}
}
}
return m;
}
Matrix quick_pow(Matrix base, lint pow)
{
Matrix I;
while(pow)
{
if(pow & 1)
{
I = I * base;
}
base = base * base;
pow >>= 1;
}
return I;
}
矩阵快速幂模板
最新推荐文章于 2024-10-25 17:33:50 发布