矩阵快速幂
来源:互联网 发布:淘宝医药商城 编辑:程序博客网 时间:2024/06/07 05:50
#include<stdio.h>#include<string.h>int mod;struct matrix{ int a[5][5];}E;int pow_mod(int a,int b){ int res=1; while(b) { if(b&1) res=res*a%mod; a=a*a%mod; b>>=1; } return res;}matrix matrix_mul(matrix A,matrix B){ matrix c; memset(c.a,0,sizeof(c.a)); for(int i=0;i<5;i++) for(int j=0;j<5;j++) for(int k=0;k<5;k++) c.a[i][j]=(c.a[i][j]+A.a[i][k]*B.a[k][j])%mod; return c;}void matrix_pow(matrix A,int k){ matrix e=E; int ans=pow_mod(2,k+2); while(k) { if(k&1) e=matrix_mul(e,A); A=matrix_mul(A,A); k>>=1; } printf("%d\n",((ans-(e.a[4][0]+e.a[4][1]+e.a[4][2]+e.a[4][3]))%mod+mod)%mod);}int main(){ int i,k; matrix A; memset(A.a,0,sizeof(A.a)); A.a[0][3]=A.a[1][1]=A.a[1][2]=A.a[2][0]=A.a[2][3]=A.a[3][1]=A.a[4][0]=A.a[4][2]=1; A.a[4][4]=2; memset(E.a,0,sizeof(E.a)); for(i=0;i<5;i++) E.a[i][i]=1; while(scanf("%d%d",&k,&mod)!=EOF) { if(k<3) printf("0\n"); else matrix_pow(A,k-2); }}
0 0
- 快速矩阵快速幂
- 转移矩阵+矩阵快速幂
- 矩阵乘法 矩阵快速幂
- 构造矩阵+矩阵快速幂
- 矩阵快速幂,矩阵加法,矩阵乘法
- 快速幂||矩阵快速幂
- 快速幂&矩阵快速幂
- 快速幂,矩阵快速幂
- 快速幂 矩阵快速幂
- 快速幂&矩阵快速幂
- 【快速幂】【矩阵快速幂】
- 快速幂和快速矩阵
- poj3070--矩阵 快速幂
- POJ3233矩阵快速幂
- poj3070Fibonacci 矩阵快速幂
- 矩阵的快速幂
- 矩阵快速幂
- 矩阵的快速幂
- SQL性能个人实践心得【持续更新】
- 用Java编写的:剪切一个文件夹的小程序
- hibernate多表操作之多对多
- 弹性运动框架
- 【GDB调试学习笔记】调试程序段错误
- 矩阵快速幂
- Android Bluetooth(蓝牙)实例
- leetcode 24. Swap Nodes in Pairs
- 两个链表的第一个公共节点
- SGU 223 little kings BSOJ2772 状压DP
- leetcode 167 Two Sum II - Input array is sorted C++
- struts令牌机制
- Java中反射知识的理解介绍
- Scala10