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;
}
#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 1575 矩阵快速幂模板
- hdu 1575 Tr A(矩阵快速幂乘法优化算法)
- HDU - 1575 Tr A 纯矩阵快速幂
- HDU 1757,1575,2604,2256 矩阵快速幂总结
- hdu 1575(矩阵快速幂)
- HDU-1575(矩阵快速幂)
- HDU.1575 Tr A ( 矩阵快速幂)
- hdu 1575(矩阵快速幂)
- 【HDU 1575】Tr A(矩阵快速幂)
- HDU 1575 Tr A (矩阵快速幂)
- HDU1575--Tr A(矩阵快速幂)
- HDU 1575 Tr A(矩阵快速幂)
- hdu 1575 Tr A(矩阵快速幂)
- hdu1575 Tr A (矩阵快速幂)
- HDU 1575 Tr A(矩阵快速幂 水 入门)
- HDU 1575 Tr A 矩阵快速幂
- Hdu 1575 Tr A【矩阵快速幂】
- hdu 1575 矩阵快速幂
- 【HDU】1575 - Tr A(矩阵快速幂)
- HDU 1575 Tr A(矩阵快速幂)