hdu1575 TrA 矩阵快速幂

来源:互联网 发布:大数据信用查询平台 编辑:程序博客网 时间:2024/06/03 18:38

                       HDU 1575 点击打开链接

很裸的一道矩阵快速幂题,直接裸模板。

#include<stdio.h>#include<iostream>using namespace std;const int mod=9973;int n,k;struct Ju{    int x[15][15];};Ju operator *(const Ju& a,const Ju& b){    Ju c;    for(int i=0;i<n;i++)    {        for(int j=0;j<n;j++)        {            c.x[i][j]=0;            for(int k=0;k<n;k++)            {                c.x[i][j]+=(a.x[i][k]*b.x[k][j])%mod;                c.x[i][j]%=mod;            }        }    }    return c;}Ju pow(Ju a){    Ju one;    for(int i=0;i<n;i++)    {        for(int j=0;j<n;j++)        {            if(i==j)one.x[i][j]=1;            else                one.x[i][j]=0;        }    }    while(k)    {        if(k&1)        {            one=one*a;        }        a=a*a;        k/=2;    }    return one;}int main(){    int t;    while(~scanf("%d",&t))    {        while(t--)        {            scanf("%d%d",&n,&k);            Ju a;            for(int i=0; i<n; i++)            {                for(int j=0; j<n; j++)                {                    scanf("%d",&a.x[i][j]);                }            }            Ju ans=pow(a);            int sum=0;            for(int i=0;i<n;i++)            {                sum+=ans.x[i][i];                sum%=mod;            }            printf("%d\n",sum);        }    }}


原创粉丝点击