POJ 3233_Matrix Power Series
来源:互联网 发布:matlab中蚁群算法 编辑:程序博客网 时间:2024/06/04 00:40
题意:
求n*n矩阵的幂和
分析:
逐个加起来时间复杂度太高,通过在矩阵中套个矩阵和,再利用矩阵快速幂,最后时间复杂度为
代码:
#include<cstdio>#include<iostream>#include<cstdio>using namespace std;typedef long long ll;const int N= 85;int n;struct Matrix{ int row,cal; ll m[N][N];};Matrix init(Matrix a, ll t){ for(int i = 0; i < a.row; i++) for(int j = 0; j < a.cal; j++) a.m[i][j] = t; return a;}Matrix mul(Matrix a,Matrix b, int mod){ Matrix ans; ans.row = a.row, ans.cal = b.cal; ans = init(ans,0); for(int i = 0; i < a.row; i++) for(int j = 0; j < b.cal; j++) for(int k = 0; k < a.cal; k++) ans.m[i][j] = (ans.m[i][j] + a.m[i][k] * b.m[k][j])%mod; return ans;}Matrix quick_pow(int k, Matrix A, int mod){ Matrix I; I.row = 2 * n, I.cal = n; I = init(I,0); for(int i = 0; i < n; i++) I.m[i][i] = 1; int cnt = 1; while(k){ if(k&1) I = mul(A, I, mod); A = mul(A, A, mod); k>>=1; } return I;}int main (void){ int k, mod;scanf("%d%d%d",&n,&k,&mod); Matrix A, I; A.row= A.cal = 2 * n; A = init(A, 0); for(int i = 0; i < n; i++) for(int j = 0; j < n; j++) scanf("%d",&A.m[i][j]); for(int i = n; i < 2 * n; i++){ A.m[i][i] = 1; A.m[i][i - n] = 1; } Matrix res = quick_pow(k+1, A, mod); int tmp; for(int i = n; i < 2 * n; i++){ for(int j = 0; j < n; j++){ if(i - j == n) tmp = (res.m[i][j] - 1+mod)%mod; else tmp = res.m[i][j]; printf("%d%c",tmp, j == n-1?'\n':' '); } } return 0;}
样例都调不出来,半天才发现自己原来的模板乘法写错了,神奇的竟然用错的模板过了两道题。。。真是连自己都不能信了,懒惰的后果,下次一定要自己重新动手!!
哦因为之前习惯写
0 0
- POJ 3233_Matrix Power Series
- POJ 3233 Matrix Power Series
- POJ 3233Matrix Power Series
- poj 3233 Matrix Power Series
- poj 3233 Matrix Power Series
- Poj 3233 Matrix Power Series
- POJ 3233 Matrix Power Series
- poj 3233 Matrix Power Series
- poj 3233 Matrix Power Series
- POJ 3233 Matrix Power Series
- poj 3233 Matrix Power Series
- poj 3233 Matrix Power Series
- poj 3233 Matrix Power Series
- POJ 3233 Matrix Power Series
- poj 3233:Matrix Power Series
- POJ 3233 Matrix Power Series
- poj 3233 Matrix Power Series
- poj 3233 Matrix Power Series
- 深入分析JavaWeb 12 -- jsp运行原理与基本语法
- linux logrotate 配置文件
- QJson的编译和安装--------可行
- linux shell 编程之语法学习
- Android WebView File域同源策略绕过漏洞浅析
- POJ 3233_Matrix Power Series
- Qt添加icon图标(主要用于treeview或tableview的item前)
- 腾讯移动游戏平台SDK(MSDK) ios版Ane扩展 过程中所遇到的问题
- 大数据量高并发的数据库优化
- 收藏的文章
- 为网站加入Drupal星球制作RSS订阅源
- 中国智慧景区联盟今日成立 发布《中国智慧景区九寨沟宣言》
- DBA的技能图谱
- YARN文档概述