const ll mod=1000;
const int N=4;
struct node
{
ll a[N][N];
void init()
{
for(int i=0;i<N;i++)
for(int j=0;j<N;j++)
a[i][j]=0;
for(int i=0;i<N;i++)
a[i][i]=1;
}
void CSH()
{
for(int i=0;i<N;i++)
for(int j=0;j<N;j++)
a[i][j]=0;
}
};
node add(node x,node y)
{
node c;
for(int i=0;i<N;i++)
for (int j=0;j<N;j++)
c.a[i][j]=((x.a[i][j]+y.a[i][j])%mod);
return c;
}
node mul(node x,node y)
{
node c;
c.CSH();
for(int i=0;i<N;i++)
{
for(int j=0;j<N;j++)
{
for(int k=0;k<N;k++)
c.a[i][j]+=x.a[i][k]*y.a[k][j];
c.a[i][j]%=mod;
}
}
return c ;
}
node quick(node x,ll y)
{
node ans;
ans.init();
while(y)
{
if(y&1) ans=mul(ans,x);
y>>=1;
x=mul(x,x) ;
}
return ans;
}
int main()
{
}
矩阵快速幂模版
猜你喜欢
转载自blog.csdn.net/oinei/article/details/76034341
今日推荐
周排行