hdu 1575 Tr A (矩阵快模幂)
来源:互联网 发布:linux 查看监听端口 编辑:程序博客网 时间:2024/06/05 10:28
Tr A
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 2043 Accepted Submission(s): 1512
每组数据的第一行有n(2 <= n <= 10)和k(2 <= k < 10^9)两个数据。接下来有n行,每行有n个数据,每个数据的范围是[0,9],表示方阵A的内容。
22 21 00 13 999999991 2 34 5 67 8 9
22686
#include<iostream>
using namespace std;
const int MAX=101;
int n;
typedef struct Matrix
{
int mat[MAX][MAX];
}matrix;
matrix A,B;
Matrix matrix_mul(matrix a,matrix b)
{
matrix c;
memset(c.mat,0,sizeof(c.mat));
int i,j,k;
for(i=1;i<=n;i++) //矩阵乘法
for(j=1;j<=n;j++)
for(k=1;k<=n;k++)
{
c.mat[i][j]+=a.mat[i][k]*b.mat[k][j];
c.mat[i][j]%=9973;
}
return c;
}
Matrix matrix_quick_power(matrix a,int k)
{
int i;
matrix b;
memset(b.mat,0,sizeof(b.mat));
for(i=1;i<=n;i++)
b.mat[i][i]=1;
while(k)
{
if(k&1)b=matrix_mul(a,b);
a=matrix_mul(a,a);
k>>=1;
}
return b;
}
int main()
{
int i,j,sum,k,t;
cin>>t;
while(t--)
{
cin>>n>>k;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
cin>>A.mat[i][j];
B=matrix_quick_power(A,k);
sum=0;
for(i=1;i<=n;i++)
{
sum+=B.mat[i][i];
sum%=9973;
}
cout<<sum<<endl;
}
return 0;
}
- hdu 1575 Tr A (矩阵快模幂)
- hdu 1575 Tr A(矩阵乘法)
- hdu 1575 Tr A 矩阵基础题
- hdu 1575 Tr A(矩阵操作入门)
- hdu 1575Tr A 矩阵快速幂
- HDU 1575 Tr A(矩阵快速幂)
- HDU 1575 Tr A 矩阵的幂
- HDU 1575 Tr A【矩阵幂】
- 【矩阵模板】【hdu 1575】Tr A
- HDU 1575 Tr A (矩阵快速幂)
- HDU 1575-Tr A(矩阵快速幂)
- HDU 1575 Tr A (矩阵快速幂)
- HDU - 1575 Tr A(矩阵快速幂)
- hdu 1575 Tr A(矩阵快速幂)
- Hdu 1575 Tr A【矩阵快速幂】
- HDU 1575 Tr A (矩阵快速幂)
- hdu 1575 Tr A(矩阵乘法)
- 【HDU 1575】Tr A (矩阵快速幂)
- usrpL0变采样滤波器的性能优化
- 帧间预测模式选择和分割part1
- Android应用开发学习笔记之Service
- 线程的创建和等待
- linux lsof
- hdu 1575 Tr A (矩阵快模幂)
- 介绍VC中3种方法得到文本框中的值
- HTTP协议详解个人总结(1)
- poj 1604
- Unix网络编程--进程间通信--管道通信
- Spring_c3p0 配置详解
- 循环条件中使用逗号
- org.apache.maven.plugin.MojoExecutionException: protoc failure
- WireShark过滤语法