矩阵快速幂 与快速幂的求解
来源:互联网 发布:酷狗音乐软件版本 编辑:程序博客网 时间:2024/06/06 01:19
矩阵快速幂 与快速幂的求解
矩阵快速幂 ,这里之研究方阵就可以了;
矩阵运算 这里算乘法 要重载运算符 重载乘法运算符和求幂运算符
快速幂的思想简单
例如 :
求 a^7 那么 先求a 之后 求a^2 求 a^3 求 a^6 求a^7 即可得到结果 ,
具体的看代码:
#include<iostream>using namespace std;int quickpow(int a, int n){ int p = 1; int q = a; while(n) { if(n&1) p = q*p; q = q*q; n>>=1; } return p;}int main(){ int a ,n; while(cin>>a>>n) { int ans = quickpow(a, n); cout<<"计算 "<<a<<" 的"<<n<<"次方: "<<ans<<endl; } return 0;}
最后是矩阵快速幂的求解 这里都没有求模
看代码:
#include<iostream>using namespace std;const int len =3;struct Mat{ int mat[len][len];};Mat e = { 1,0,0, 0,1,0, 0,0,1};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]; } } } return c;}Mat operator^(Mat a, int n){//矩阵快速幂 这里只算三阶 Mat p = e; Mat q = a; while(n) { if(n&1) { p = p*q; } q = q*q; n>>=1; } return p;}int main(){//上面的意思友点类似于运算符重载 int i, j; Mat q = {1,0,1, 0,1,1, 2,3,3}; Mat p = q^3; for(i = 0 ; i < 3;i++) { for(j = 0;j < 3;j++) { cout<<p.mat[i][j]<<" "; } cout<<endl; } return 0;}
0 0
- 矩阵快速幂 与快速幂的求解
- 快速幂/快速幂取模/矩阵求解快速幂
- 差分方程求解,leslie矩阵的快速幂。
- 矩阵的应用--矩阵相乘与矩阵快速幂
- HDU 2842 Chinese Rings ( 矩阵转换,矩阵快速幂求解)
- 快速幂与快速矩阵幂
- 快速幂与矩阵快速幂
- 普通快速幂与矩阵快速幂
- 快速幂与矩阵快速幂
- 快速幂与矩阵快速幂
- 快速矩阵快速幂
- 矩阵的快速幂
- 矩阵的快速幂
- 矩阵的快速幂
- 矩阵的快速幂
- 矩阵的快速幂
- 矩阵的快速幂
- 矩阵的快速幂
- Mybatis的入门的注意事项
- linux下编译安装ACE6.3.1
- HTML Templates
- java单链表代码实现
- 表格变色例子
- 矩阵快速幂 与快速幂的求解
- oracle crs起停步骤及srvctl crsctl 命令用法
- Android 取得应用程序的启动次数和运行时间等信息
- ubuntu dns,gateway
- Python标准库:内置函数list([iterable])
- C/C++语言中内容完全相同的多个函数,使用宏函数的写法
- C++ 新旧代码的兼容
- jQuery Mobile基础知识学习
- android framework/base 看源码实战:控制Toast显示时长(提供在线看源码地址)