算法笔记--矩阵运算
来源:互联网 发布:仿生材料知乎 编辑:程序博客网 时间:2024/05/21 10:30
矩阵类,以及相关运算的重载。
#include<bits/stdc++.h>using namespace std;typedef long long LL;#define MOD 10007struct Mat{ int n,m; LL mat[9][9];};Mat operator *(Mat a,Mat b){ Mat c; memset(c.mat,0,sizeof(c.mat)); c.n = a.n,c.m = b.m; for(int i=1;i<=a.n;i++){ for(int j=1;j<=b.m;j++){ for(int k=1;k<=a.m;k++){ c.mat[i][j] += (a.mat[i][k]*b.mat[k][j])%MOD; c.mat[i][j] %= MOD; c.mat[i][j] = (c.mat[i][j]+ MOD)%MOD; } } } return c;}Mat operator +(Mat a,Mat b){ Mat c; memset(c.mat,0,sizeof(c.mat)); c.n = a.n,c.m = a.m; for(int i=1;i<=a.n;i++){ for(int j=1;j<=a.m;j++){ c.mat[i][j] = (a.mat[i][j]+b.mat[i][j])%MOD; } } return c;}Mat operator ^(Mat a,LL k){ Mat c; memset(c.mat,0,sizeof(c.mat)); c.n = a.n,c.m = a.n; for(int i=1;i<=a.n;i++)c.mat[i][i] = 1; while(k){ if(k&1){ c = c*a; } a = a*a; k>>=1; } return c;}void out(Mat a){ for(int i=1;i<=a.n;i++){ for(int j=1;j<=a.m;j++){ printf(j==a.m? "%I64d\n":"%I64d ",a.mat[i][j]); } }}LL quick_pow(LL a,LL b,LL p){ LL ret=1; a%=p; while(b){ if(b&1) ret=(ret*a)%p; a=(a*a)%p; b/=2; } return ret;}int main(){ return 0;}
阅读全文
0 0
- 算法笔记--矩阵运算
- 算法-->矩阵运算
- 分治算法之矩阵运算
- 算法导论之矩阵运算
- 算法导论 矩阵运算 LUP
- numpy的矩阵运算笔记
- 算法导论28(矩阵运算)
- 矩阵旋转算法提高75%运算
- 基于矩阵运算引擎高效搜索算法
- 线性代数学习笔记二:矩阵及其运算
- opencv学习笔记(2)----矩阵运算
- matlab笔记(2)----矩阵及其运算
- 矩阵运算
- 矩阵运算
- 矩阵运算
- 矩阵运算
- 矩阵运算
- 矩阵运算
- Mybatis逆向工程的使用方法
- File.separator
- 2017.6.30
- array的一些重要知识点
- MySQL5.7MSI安装详解
- 算法笔记--矩阵运算
- Ubuntu Qt 报错error: cannot find -lGL解决办法
- Socket笔记
- 杭电acm1003
- 160. Intersection of Two Linked Lists
- 100多个经典常用的jQuery插件大全实例演示和下载
- 5-7 Complete Binary Search Tree
- java中 sql查询结果集转换成javabean
- java连接oracle12c