首页 > 其他 > 详细

hdu 1575 矩阵连乘2

时间:2015-12-12 20:05:36      阅读:121      评论:0      收藏:0      [点我收藏+]
技术分享
#include<iostream>
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
const int mod=9973;
int n;
struct matrix
{
  int f[10][10];
};

matrix mul(matrix a,matrix b)
{
    int i,j,k;
    matrix c;
    memset(c.f,0,sizeof(c.f));
    for(k=0;k<n;k++)
    {
         for(i=0;i<n;i++)
      {
            for(j=0;j<n;j++)
          {
            c.f[i][j]+=a.f[i][k]*b.f[k][j];
               c.f[i][j]%=mod;
           }
       }

     }
    return c;
}

matrix pow_mod(matrix a,int b)
{
    matrix s;
    int t;
    memset(s.f,0,sizeof(s.f));
    for(int i=0;i<n;i++)
    {
        s.f[i][i]=1;
    }
    while(b)
    {

        t=b%2;
        b/=2;
        if(t!=0)
            s=mul(s,a);
         a=mul(a,a);
    }
    return s;
}


int main()
{
    int t,k;
    scanf("%d",&t);
    while(t--)
    {
        scanf("%d%d",&n,&k) ;
        matrix e;
       for(int i=0;i<n;i++)
          for(int j=0;j<n;j++)
          {
              scanf("%d",&e.f[i][j]);
          }

    e=pow_mod(e,k);
    int ans=0;
    for(int i=0;i<n;i++)
        ans=(ans+e.f[i][i])%mod;
    printf("%d\n",ans);
    }

    return 0;
}
View Code

 

hdu 1575 矩阵连乘2

原文:http://www.cnblogs.com/xiaotian-222/p/5041616.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!