矩阵快速幂模版

来源:互联网 发布:js ajax post data 编辑:程序博客网 时间:2024/06/16 01:49
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 a,node b){    node c;    for(int i=0;i<N;i++)        for (int j=0;j<N;j++)            c.a[i][j]=((a.a[i][j]+b.a[i][j])%mod);    return c;}node mul(node a,node b){    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]+=a.a[i][k]*b.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);        x=mul(x,x) ;    }    return ans;}int main(){}