简单矩阵封装

const int sz=26;
struct mat{
    ll m[sz+2][sz+2];
    mat(){
        memset(m,0,sizeof m);
        rep(i,1,sz)m[i][i]=1;
    }
    mat friend operator*(const mat&a,const mat&b){
        mat res;
        rep(i,1,sz){
            rep(j,1,sz){
                rep(p,1,sz){
                    res.m[i][j] = (res.m[i][j]+a.m[i][p]*b.m[p][j])%mod;
                }
            }
        }
        return res;
    }
    mat friend operator+(const mat&a,const mat&b){
        mat res;
        rep(i,1,sz)rep(j,1,sz)res.m[i][j]=(a.m[i][j]+b.m[i][j]);
        return res;
    }
};
mat ksm(mat a,int b){
    mat res;
    while(b){
        if(b&1)res=res*a;
        a=a*a;
        b>>=1;
    }return res;
}
posted @ 2025-08-16 19:40  Marinaco  阅读(4)  评论(0)    收藏  举报
//雪花飘落效果