NYOJ 148 矩阵快速幂模版
来源:互联网 发布:ajax post json data 编辑:程序博客网 时间:2024/06/01 23:51
矩阵快速幂,其实就是和快速幂的原理相同的, 只是把两个矩阵相乘。
#include<stdio.h>#include<string.h>#include<algorithm>using namespace std;const int N = 2;const int mod = 10000;struct Node{ int row, cal; int s[N][N]; Node ()//需要构造的矩阵 { row = cal = N; s[0][0] = 1, s[0][1] = 1; s[1][0] = 1, s[1][1] = 0; }};Node Matble(Node x, Node y)//矩阵的乘法{ Node ans; ans.row = x.row; ans.cal = y.cal; for(int i = 0; i < ans.row; i++) for(int j = 0; j < ans.cal; j++) ans.s[i][j] = 0; for(int i = 0; i < ans.row; i++)//两个矩阵相乘 for(int j = 0; j < ans.cal; j++) for(int k = 0; k < x.cal; k++) ans.s[i][j] = (int)(ans.s[i][j] + (long long)x.s[i][k] * y.s[k][j] % mod) % mod;//技巧,相乘可能超int return ans;}int pow_Matble(int n) //快速幂{ if(!n) return 0; Node ans, temp; ans.s[0][0] = 1, ans.s[0][1] = 0; ans.s[1][0] = 0, ans.s[1][1] = 1; while(n > 0) { if(n&1) ans = Matble(ans, temp);//改成矩阵相乘 temp = Matble(temp, temp);//改成矩阵相乘 n /= 2; } return ans.s[0][1];//返回矩阵中我们需要的结果}int main(){ int n; while(scanf("%d", &n), n >= 0) printf("%d\n", pow_Matble(n)); return 0;}
0 0
- NYOJ 148 矩阵快速幂模版
- 矩阵快速幂模版
- 模版--矩阵快速幂
- 矩阵快速幂模版
- 矩阵快速幂模版
- 矩阵快速幂 模版
- 矩阵快速幂模版
- 模版—矩阵连乘快速幂
- HDU 1757 矩阵快速幂模版
- 51nod 矩阵快速幂模版题
- poj 3734 <矩阵快速幂模版>
- NYOJ 题目148 fibonacci数列(二)(矩阵快速幂)
- nyoj 148 fibonacci数列(二) 【矩阵快速幂】
- nyoj fibonacci数列(二) 148 (矩阵快速幂模板)
- nyoj--148 fibonacci数列(二)(矩阵快速幂)
- NYOJ 148 fibonacci数列(二)【矩阵快速幂】
- nyoj 148 fibonacci数列(二)(矩阵快速幂)
- NYOJ 298 点的变换 (矩阵快速幂)
- tcp/ip ---------- UDP
- LCD1602
- ThinkPHP框架完全解析三
- Ruby on rails 实战圣经:ActiveRecord
- Ruby on rails 实战圣经:数据库迁移 - Migrations
- NYOJ 148 矩阵快速幂模版
- Ruby on rails 实战圣经:ActiveRecord 数据表关系
- mysql存储过程和命令
- 【笔记】Android在代码中打开或关闭WiFi
- android 自定义View使用
- 线性查找与二分查找法的差异
- Servlet中解决中文乱码的方法
- 关于ThinkPHP遍历后jquery失效的问题
- These critical programs are missing or too old: as ld