hihoCoder 1151 : 骨牌覆盖问题·二 矩阵快速幂
来源:互联网 发布:java线程池简单实现 编辑:程序博客网 时间:2024/06/02 07:28
#1151 : 骨牌覆盖问题·二
时间限制:10000ms
单点时限:1000ms
内存限制:256MB
- 样例输入
62247088
- 样例输出
4037
描述
上一周我们研究了2xN的骨牌问题,这一周我们不妨加大一下难度,研究一下3xN的骨牌问题?
所以我们的题目是:对于3xN的棋盘,使用1x2的骨牌去覆盖一共有多少种不同的覆盖方法呢?
首先我们可以肯定,奇数长度一定是没有办法覆盖的;对于偶数长度,比如2,4,我们有下面几种覆盖方式:
提示:3xN骨牌覆盖
输入
第1行:1个整数N。表示棋盘长度。1≤N≤100,000,000
输出
第1行:1个整数,表示覆盖方案数 MOD 12357
//同1,但是起始的向量和矩阵都变化了,详细可以看hihocoder的说明; //(a, b) x M = (b, a+b)//必须用 long long #include<iostream>#include<stdio.h>#include<string.h>using namespace std;#define M 12357struct matrix{long long map[8][8];}; matrix mat,ans;void init(){int i,j,k;memset(mat.map,0,sizeof(mat.map));for(i=0;i<8;i++)mat.map[i][7-i]=1; mat.map[3][7]=1;mat.map[6][7]=1;mat.map[7][3]=1;mat.map[7][6]=1;for(i=0;i<8;i++)for(j=0;j<8;j++)ans.map[i][j]=(i==j);}matrix mul(matrix a,matrix b){int i,j,k;matrix c;for(i=0;i<8;i++)for(j=0;j<8;j++){c.map[i][j]=0;for(k=0;k<8;k++){c.map[i][j]+=(a.map[i][k]*b.map[k][j])%M;c.map[i][j]%=M;}}return c;}void pow(int n){for(;n;n>>=1){if(n&1)ans=mul(ans,mat);mat=mul(mat,mat);}}int main(){int n; while(scanf("%d",&n)!=EOF){init();pow(n);//linux: printf("%lld",a);//windows: printf("%I64d",a);//cout<<ans.map[1][1]<<endl; 对 //printf("%I64d\n",ans.map[1][1]); 错 printf("%lld\n",ans.map[7][7]);//对 }return 0;}
0 0
- hihoCoder 1151 : 骨牌覆盖问题·二 矩阵快速幂
- hihocoder 1151 : 骨牌覆盖问题·二(找规律+矩阵快速幂)
- hihoCoder 1143 : 骨牌覆盖问题·一 矩阵快速幂
- hihocoder 1162 : 骨牌覆盖问题·三 矩阵快速幂
- hihocoder 1151 : 骨牌覆盖问题·二
- hihoCoder 1143 : 骨牌覆盖问题·一(递推,矩阵快速幂)
- HihoCoder1151 骨牌覆盖问题·二(矩阵快速幂,递推)
- 快速矩阵幂 hihoCoder1162 骨牌覆盖问题·三
- hihocoder1143 骨牌覆盖问题·一(矩阵快速幂)
- hihoCoder #1143 : 骨牌覆盖问题·一(矩阵乘法)
- hihoCoder 1151 骨牌覆盖 递推+矩阵幂
- 算法-骨牌覆盖问题(矩阵快速幂求Fibonacii)
- hihoCoder #1143 : 骨牌覆盖问题·一
- hihocoder 1143 : 骨牌覆盖问题·一
- hihocoder 1162 : 骨牌覆盖问题·三
- hihocoder骨牌覆盖问题·三
- hihoCoder#1143 : 骨牌覆盖问题·一
- hiho一下·41 骨牌覆盖问题·一(矩阵快速幂·费波拉契)
- 从源码角度 解决Volley框架乱码的问题
- 长的丑要多读书(3)
- Android常用工具类(收藏)
- opencv &qt study - (1) -打开一幅图片
- HDU - 1698 - Just a Hook (线段树-成段更新)
- hihoCoder 1151 : 骨牌覆盖问题·二 矩阵快速幂
- BZOJ 3997: [TJOI2015]组合数学
- 反转链表
- 【STL源码剖析】--error: ‘power’ was not declared in this scope
- TJOI2015Day2测试总结
- 【C++总结】C++的new和delete
- Linux下加载.ko驱动模块的两种方法:insmod与modprobe
- Python:[转] #!/usr/bin/env python与#!/usr/bin/python的区别
- Calendar类学习,自己写了个日历查询小程序,供大家学习参考