【模板】矩阵快速幂
来源:互联网 发布:不成问题的问题 知乎 编辑:程序博客网 时间:2024/05/20 07:59
题目
就是求一个矩阵的幂
快考试了时间太紧了没时间仔细搞
代码来自Qiu.YF
代码如下
#include<iostream>#include<cstdio>#include<cctype>#include<cstring>#include<string> using namespace std; #define in = read() typedef long long ll; typedef unsigned int ui; const ll size = 100 +10; ll n , k; int mod = 1000000007;inline ll read(){ ll num = 0 , f = 1; char ch = getchar(); while(!isdigit(ch)){ if(ch == '-') f = -1; ch = getchar(); } while(isdigit(ch)){ num = num*10 + ch - '0'; ch = getchar(); } return num*f;}struct Matrix{ ll s[size][size]; Matrix(){ memset(s , 0 , sizeof(s));} Matrix operator *(const Matrix a){ Matrix ans; for(register int i=1;i<=n;i++) for(register int j=1;j<=n;j++) for(register int k=1;k<=n;k++) ans.s[i][j] = (ans.s[i][j] + s[i][k]*a.s[k][j]%mod)%mod; return ans; }};Matrix pow(Matrix q , ll opt){ ll i = opt; Matrix ans; for(register int j=1;j<=n;j++) ans.s[j][j] = 1; while(i){ if(i&1) ans = ans*q; q = q*q; i >>= 1; } return ans;}int main(){ n in; k in; Matrix start; for(register int i=1;i<=n;i++) for(register int j=1;j<=n;j++) start.s[i][j] in; Matrix ans = pow(start , k); for(register int i=1;i<=n;i++,printf("\n")) for(register int j=1;j<=n;j++) printf("%lld " , ans.s[i][j]); return 0;}//COYG
阅读全文
0 0
- 矩阵快速幂模板
- 矩阵快速幂--模板
- 矩阵快速幂 模板
- 矩阵快速幂模板
- 矩阵快速幂模板
- 【矩阵快速幂模板】
- 矩阵快速幂模板
- 矩阵快速幂模板
- 矩阵快速幂模板
- 矩阵快速幂【模板】
- 矩阵快速幂模板
- 矩阵快速幂模板
- 矩阵快速幂模板
- 矩阵快速幂模板
- 矩阵快速幂模板
- 矩阵快速幂模板
- 矩阵快速幂 【模板】
- 快速矩阵幂模板
- [App] rhel7 下 安装 JBoss7
- Android架构图 (5层)
- 8queen(稍后补)
- 使用GO开发桌面GUI程序
- 屌丝的逆袭
- 【模板】矩阵快速幂
- 大数据处理之(top k)
- spring整合hibernate不带有hibernate.cfg.xml(推荐使用)
- bootstrap-select多选框
- 移动端车牌识别技术,基于安卓,ios平台支持二次开发
- UVa 401
- 使用ifstream ofstream copy快速处理文本
- 20171109
- mybatis分页拦截器的实现