现在的位置: 首页 > 综合 > 正文

ACM 矩阵乘法模板(T_T)+快速幂

2018年05月01日 ⁄ 综合 ⁄ 共 491字 ⁄ 字号 评论关闭

ACM矩阵乘法模板(T_T)+快速幂

typedef long long lint;
struct matrix
{
    lint m[10][10];
    matrix()
    {
        memset(m,0,sizeof(m));//注意要清零
    }
};

matrix operator * (const matrix & a,const matrix & b)
{
    matrix c;
    for (int i=1; i<=9; i++)
        for (int j=1; j<=9; j++)
        {
            c.m[i][j]=0;
            for (int k=1; k<=9; k++)
                c.m[i][j]=(c.m[i][j]+a.m[i][k]*b.m[k][j])%mod;//一般题目都要求要modulo一个数
        }
    return c;
}

matrix quick(matrix base,int pow)
{
    matrix a;
    for (int i=1; i<=9; i++) a.m[i][i]=1;//单位阵,矩阵乘法时要用到
    while (pow)
    {
        if (pow&1) a=a*base;
        base=base*base;
        pow>>=1;
    }
    //if (pow==0) return base;
    return a;
}

参考Gatevin大神的题目

抱歉!评论已关闭.