[POJ]3233. Matrix Power Series
来源:互联网 发布:娄底网络营销软件 编辑:程序博客网 时间:2024/04/28 19:24
Analysis
找了几道矩阵乘法的题目练一练,这道是最水的。大意是给定N*N矩阵A,求A+A^1+A^2+....+A^k。那么使用二分的方法,将要求的矩阵变形为
A+A^1+A^2+....+A^(k div 2) + A^(k div 2)*(A+A^1+A^2+....+A^(k div 2))
就可以在log的时间内出解了。
Accepted Code
type matrix=array[1..30,1..30] of longint;var a,ans,tmp:matrix; n,k,m,i,j:longint;function matrixpower(a:matrix;var b:matrix;p:longint):matrix;var tmp,tmp2,b2,b3:matrix; i,j,k:longint;begin if p=1 then begin b:=a; matrixpower:=a; end else begin tmp:=matrixpower(a,b,p shr 1); if p and 1=0 then begin matrixpower:=tmp; for i:=1 to n do for j:=1 to n do for k:=1 to n do matrixpower[i,j]:=(matrixpower[i,j]+tmp[i,k]*b[k,j]) mod m; for i:=1 to n do for j:=1 to n do b2[i,j]:=0; for i:=1 to n do for j:=1 to n do for k:=1 to n do b2[i,j]:=(b2[i,j]+b[i,k]*b[k,j]) mod m; b:=b2; end else begin tmp2:=tmp; for i:=1 to n do for j:=1 to n do for k:=1 to n do tmp2[i,j]:=(tmp2[i,j]+tmp[i,k]*b[k,j]) mod m; for i:=1 to n do for j:=1 to n do begin b2[i,j]:=0; b3[i,j]:=0; matrixpower[i,j]:=0; end; for i:=1 to n do for j:=1 to n do for k:=1 to n do b2[i,j]:=(b2[i,j]+b[i,k]*b[k,j]) mod m; for i:=1 to n do for j:=1 to n do for k:=1 to n do matrixpower[i,j]:=(matrixpower[i,j]+tmp2[i,k]*a[k,j]) mod m; for i:=1 to n do for j:=1 to n do matrixpower[i,j]:=(matrixpower[i,j]+a[i,j]) mod m; for i:=1 to n do for j:=1 to n do begin for k:=1 to n do b3[i,j]:=(b3[i,j]+b2[i,k]*a[k,j]) mod m; b3[i,j]:=b3[i,j] mod m; end; b:=b3; end; end;end;begin readln(n,k,m); for i:=1 to n do for j:=1 to n do read(a[i,j]); ans:=matrixpower(a,tmp,k); for i:=1 to n do begin for j:=1 to n-1 do write(ans[i,j],' '); writeln(ans[i,n]); end;end.
- [POJ]3233. Matrix Power Series
- poj Matrix Power Series
- Matrix Power Series POJ
- POJ 3233 Matrix Power Series
- POJ 3233Matrix Power Series
- poj 3233 Matrix Power Series
- poj 3233 Matrix Power Series
- Poj 3233 Matrix Power Series
- POJ 3233 Matrix Power Series
- poj 3233 Matrix Power Series
- poj 3233 Matrix Power Series
- POJ 3233 Matrix Power Series
- poj 3233 Matrix Power Series
- poj 3233 Matrix Power Series
- poj 3233 Matrix Power Series
- POJ 3233 Matrix Power Series
- poj 3233:Matrix Power Series
- POJ 3233 Matrix Power Series
- EJB学习体会(包括JBOSS与MyEclipse中的问题)
- virtual 虚方法
- Windows API 小记
- 太平歌词《白蛇传》
- Oracle RAC EM工具日常管理
- [POJ]3233. Matrix Power Series
- 《谁的青春不迷茫》——刘同
- SICP 习题答案1.3
- 乘积最大
- 利用JQuery动画制作滑动菜单项效果
- win 7 桌面右键加入“用管理员权限运行命令行”DOS“
- [ZZ]Erlang和Golang的几点粗浅的比较
- Jenkins+Tomcat+maven+git+
- 二叉树遍历(非递归)