hdu 2604 Queuing(矩阵快速幂乘法)
2015-12-11 19:35
441 查看
[align=left]Problem Description[/align]
View Code
Queues and Priority Queues are data structures which are known to most computer scientists. The Queue occurs often in our daily life. There are many people lined up at the lunch time.
#pragma comment(linker, "/STACK:1024000000,1024000000") #include<iostream> #include<cstdio> #include<cstring> #include<cmath> #include<math.h> #include<algorithm> #include<queue> #include<set> #include<bitset> #include<map> #include<vector> #include<stdlib.h> #include <stack> using namespace std; #define PI acos(-1.0) #define max(a,b) (a) > (b) ? (a) : (b) #define min(a,b) (a) < (b) ? (a) : (b) #define ll long long #define eps 1e-10 #define MOD 1000000007 #define N 1000006 #define inf 1e12 int L,M; struct Matrix{ int mp[4][4]; }; Matrix Mul(Matrix a,Matrix b){ Matrix res; for(int i=0;i<4;i++){ for(int j=0;j<4;j++){ res.mp[i][j]=0; for(int k=0;k<4;k++){ res.mp[i][j]=(res.mp[i][j]+(a.mp[i][k]*b.mp[k][j])%M+M)%M; } } } return res; } Matrix fastm(Matrix a,int b){ Matrix res; memset(res.mp,0,sizeof(res.mp)); for(int i=0;i<4;i++){ res.mp[i][i]=1; } while(b){ if(b&1){ res=Mul(res,a); } a=Mul(a,a); b>>=1; } return res; } int main() { while(scanf("%d%d",&L,&M)==2){ if(L==1){ printf("%d\n",2%M); continue; } if(L==2){ printf("%d\n",2%M); continue; } if(L==3){ printf("%d\n",6%M); continue; } if(L==4){ printf("%d\n",9%M); continue; } Matrix tmp; for(int i=0;i<4;i++){ for(int j=0;j<4;j++){ tmp.mp[i][j]=0; } } tmp.mp[0][0]=1; tmp.mp[0][2]=1; tmp.mp[0][3]=1; tmp.mp[1][0]=1; tmp.mp[2][1]=1; tmp.mp[3][2]=1; Matrix cnt=fastm(tmp,L-4); Matrix g; g.mp[0][0]=9; g.mp[1][0]=6; g.mp[2][0]=4; g.mp[3][0]=2; cnt=Mul(cnt,g); printf("%d\n",cnt.mp[0][0]%M); } return 0; }
View Code
相关文章推荐
- GPUImage实现实时扫描线效果
- 52.集合视图UICollectionView
- IncrediBuild 编译全部项目
- 论ACM ICPC_Ruins He
- UIScrollView 使其平滑的滚动到指定位置
- UI - UIRefreshControl
- Longest Increasing Subsequence(最长增长子数列)-LeetCode关于数组的思路和技巧
- UVa 10930 - A-Sequence
- hdu Rescue
- hdu Rescue
- 扩大UIButton响应区域[按钮内有图片]
- java中StringBuilder、StringBuffer、String类之间的关系
- IOS 用UIWindow自定义AlertView(最基本代码)
- UI之instancetype和id的区别、Custom
- Windows Driver升级到VS2015+Win10 WDK后build的Driver在Win7无法加载
- 爬爬爬之路:UI(十八) 集合视图(UICollectionView)
- 【转】Cloudera Hue Issues
- 自己项目中做的UI布局
- 自己项目中做的UI布局
- 自己项目中做的UI布局