poj3734
来源:互联网 发布:浙江建造师网络教育 编辑:程序博客网 时间:2024/04/28 03:10
【题意】
有n个方块,现用红黄蓝绿四种颜色将他们染色,要求红色的方块和蓝色的方块个数均为偶数个,求方案数 mod 10007
【输入】
第一行一个t,表示有t组数据
每组数据一个数字表示n
【输出】
对于每组数据,输出一个输出表示方案数
用一个2位的2进制数表示红色方块和蓝色方块的奇偶性,发现染i个的方案数只跟染i-1个的方案数有关
所以可以用矩阵来搞一搞
program poj3734;type square=array [1..4,1..4] of longint;const maxn=10007; root:square=((2,1,1,0), (1,2,0,1), (1,0,2,1), (0,1,1,2));var ans:square; t,n,i:longint;function matrixmul (a,b:square):square;var i,j,k:longint; ans:square;begin fillchar(ans,sizeof(ans),0); for i:=1 to 4 do for j:=1 to 4 do for k:=1 to 4 do ans[i,j]:=(ans[i,j]+a[i,k]*b[k,j]) mod maxn; exit(ans);end;function power (m:longint):square;var ans,now:square;begin now:=root; fillchar(ans,sizeof(ans),0); ans[1,1]:=1; ans[2,2]:=1; ans[3,3]:=1; ans[4,4]:=1; while m<>0 do begin if m and 1 = 1 then ans:=matrixmul(ans,now); m:=m div 2; now:=matrixmul(now,now); end; exit(ans);end;begin read(t); while t>0 do begin dec(t); read(n); ans:=power(n); writeln(ans[1,1]); end;end.
- poj3734
- poj3734
- poj3734
- poj3734
- POJ3734-Blocks
- 矩阵快速幂-poj3734
- Blocks(poj3734)组合数学
- POJ3734【状压枚举】
- poj3734(矩阵幂)
- poj3734--pascal题解
- POJ3734 矩阵快速幂
- poj3734(矩阵快速幂)
- poj3734:Blocks(EGF)
- poj3734--blocks(矩阵快速幂)
- POJ3734 Blocks(矩阵快速幂)
- poj3734 Blocks(指数生成函数)
- POJ3734 比矩阵快速幂简单的方法
- poj3734——矩阵快速幂入门题
- LINQ体验(17)——LINQ to SQL语句之动态查询
- 如何在RedHat based系统中快速绑定一段IP
- (2012.03.08)初次踏上GUI编程之路
- 四极管:Uboot运行分析(一)
- WM_DRAWITEM与DrawItem()的讨论
- poj3734
- java定时执行
- C++获得系统时间,以及1970年1月1日到现在的毫秒数
- 简单网站统计功能的实现 PV IP 真实访客数(UV)
- RTP协议分析
- 解决删除linux后无法启动的方法
- Oracle-远程数据库连接的创建和问题解析
- 如何编写优质的API文档
- 如何利用Java-JACOB操作WORD文档