矩阵快速幂模板
const int maxarr=7;
LL aa,bb;
struct node
{
LL arr[maxarr][maxarr];
};
void init(node &a)
{
for(int i=0;i<maxarr;i++)
{
for(int j=0;j<maxarr;j++)
{
a.arr[i][j]=0;
}
}
}
node MatrixMultiplication(node &a,node &b)
{
LL i,j,k;
node c;
init(c);
for(i=0;i<maxarr;i++)
{
for(j=0;j<maxarr;j++)
{
for(k=0;k<maxarr;k++)
{
c.arr[i][j]=(c.arr[i][j]+a.arr[i][k]*b.arr[k][j])%mod;
}
}
}
return c;
}
node fast_power(node a,LL n)
{
node b;
init(b);
for(int i=0;i<maxarr;i++)
{
b.arr[i][i]=1;
}
while(n>0)
{
if(n&1==1) b=MatrixMultiplication(a,b);
a=MatrixMultiplication(a,a);
n>>=1;
}
return b;
}
int main()
{
node a,b;
init(a);
b=fast_power(a,n-2);
return 0;
}