矩阵运算及 快速幂求矩阵
来源:互联网 发布:中国农业银行软件 编辑:程序博客网 时间:2024/05/17 03:53
矩阵运算
矩阵运算(这里主要是针对方阵)是很重要的一个环节,先说加法吧:
加法比较简单,同行同列想加就可以运算的
代码:
Mat operator+(Mat a, Mat b){ int i , j , k ; Mat for(i = 0 ; i < len ; i++) { for(j = 0 ; j < len ; j++) { c.mat[i][j] = a.mat[i][j] + b.mat[i][j]; } }}
其次就是乘法
原理也简单: 线性代数应该学过, a[i][k] 和 b[k][j] 和做乘积运算得到c[i][j]
代码:
Mat operator*(Mat a, Mat b){ int i , j, k; Mat c; for(i = 0;i < len ; i++) { for(j = 0 ; j <len ;j++) { c.mat[i][j] = 0; for(k = 0 ; k < len;k++) { c.mat[i][j] = (a.mat[i][k] *b.mat[k][j])%MOD; } } } return c;}
至于快速幂在ACM 中是非常重要的,当我上ACM的第一天我就知道了当时是个毛头小子什么都不懂的
先说下快速幂快速幂算法旺旺和求模放在一起 这里将输入的n 看做是二进制数因此进行while (n) 判断是否为0
看代码:
int model_exp(int a, int n){ int ret = 1; while(n) { if(n&1)//奇偶判断 ret = ret*a%MOD; n>>=1;//右移一维操作 a = a*a ; } return ret;}
#include<iostream>using namespace std;const int MOD = 1000000;int model_exp(int a, int n){ int ret = 1; while(n) { if(n&1)//奇偶判断 ret = ret*a%MOD; n>>=1;//右移一维操作 a = a*a ; } return ret;}int main(){ int a , n; while(cin>>a>>n) { int ans = model_exp(a, n); cout<<ans<<endl; } return 0;}
到这里其实矩阵也差不多
看代码:
Mat operator^(Mat a, int x){//这里p为单位阵 Mat p = e, q = a; while(x) { if(x&1) p = p*q; x>>=1; q = q*q; } return p;}
以上就是快速幂的算法的主要内容,还有遇到以后补充。。。
0 0
- 矩阵运算及 快速幂求矩阵
- 矩阵运算 快速幂
- 矩阵运算,矩阵快速幂,模板
- 快速幂及矩阵
- poj3233矩阵快速幂运算
- 求矩阵的快速幂
- 【算法】矩阵快速求幂
- 矩阵快速幂求Fibonacci
- 求矩阵的快速幂
- 矩阵运算快速方法
- java操作矩阵运算(基本运算及求逆)
- Python求矩阵特征值及特征向量和实现对角化矩阵简化矩阵n次方运算
- poj 3745 Training little cats (矩阵运算+矩阵快速幂)
- 【矩阵快速幂+矩阵运算性质】Fast Matrix Calculation HDU
- HDOJ Queuing 2604【求矩阵+矩阵快速幂】
- 矩阵快速二分求n次幂
- 矩阵快速幂 求Fibonacci数列poj3070
- POJ3070矩阵快速幂求Fib
- 使用位域及共用体的知识显示位域数据在内存 中的存储形式。
- 使用ListView应该注意的地方
- 如何解决谷歌浏览器中的边框线问题
- EmguCV_Capture
- 呃 0-1背包问题~~~
- 矩阵运算及 快速幂求矩阵
- 如何通过StringTemplate匹配xml字符串
- [转载]Sublime Text 搭建 LaTeX 编写环境
- UVA10025
- 二元树中和为某一值的所有路径
- PHP集成环境安装
- UVA10564- Paths through the Hourglass
- 文本分类之情感分析 – 朴素贝叶斯分类器
- 【solr基础教程之二】索引