您的位置:首页 > 其它

hdu 1575 (矩阵快速幂)

2013-07-19 14:31 295 查看
点击打开链接

#include"stdio.h"
#include"string.h"
#define N 9973
struct node
{
int a[11][11];
}A,B;
int n,m;
void init()
{
int i,j;
memset(A.a,0,sizeof(A.a));
for(i=1;i<=n;i++)
A.a[i][i]=1;//单位矩阵
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
scanf("%d",&B.a[i][j]);
}

}
node mult(node A,node B)
{
int i,j,k;
node C;
memset(C.a,0,sizeof(C.a));
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
for(k=1;k<=n;k++)
{
C.a[i][j]+=(A.a[i][k]*B.a[k][j])%N;
C.a[i][j]%=N;
}
}
}
return C;
}
int main()
{
int i;
int T;
scanf("%d",&T);
while(T--)
{
scanf("%d%d",&n,&m);
init();
while(m)
{
if(m&1)
A=mult(B,A);
B=mult(B,B);
m/=2;
}
int ans=0;
for(i=1;i<=n;i++)
ans+=A.a[i][i];
printf("%d\n",ans%N);
}
return 0;
}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  矩阵快速幂 hdu 数学