矩阵快速幂
来源:互联网 发布:网络电视如何看直播 编辑:程序博客网 时间:2024/06/15 20:30
希望能够得出两个对应的一维矩阵.
/* Farewell. */#include <iostream>#include <vector>#include <cstdio>#include <string.h>#include <algorithm>#include <queue>#include <map>#include <string>#include <cmath>#include <bitset>#include <iomanip>#include <set>using namespace std;#define FFF freopen("in.txt","r",stdin);freopen("out.txt","w",stdout);#define gcd __gcd#define lson l,m,rt<<1#define rson m+1,r,rt<<1|1#define MP make_pair#define MT make_tuple#define PB push_backtypedef long long LL;typedef unsigned long long ULL;typedef pair<int,int > pii;typedef pair<LL,LL> pll;typedef pair<double,double > pdd;typedef pair<double,int > pdi;const int INF = 0x7fffffff;const LL INFF = 0x7f7f7f7fffffffff;const LL MOD = 2147493647;#define debug(x) std::cerr << #x << " = " << (x) << std::endlconst int MAXM = 5e3+17;const int MAXN = 1e3+17;struct matrix{ static const int MATRIX_N = 11; LL a[MATRIX_N][MATRIX_N]; int row, col; matrix():row(MATRIX_N),col(MATRIX_N){memset(a,0,sizeof(a));} matrix(int x, int y):row(x),col(y){memset(a,0,sizeof(a));} LL* operator [] (int x){return a[x];} matrix operator * (matrix x){ matrix tmp(row, x.col); for(int i = 0; i < row; i++) for(int j = 0; j < col; j++) if(a[i][j]) for(int k = 0; k < x.col; k++) if (x[j][k]){ tmp[i][k] = (tmp[i][k]+a[i][j] * x[j][k]%MOD)%MOD; tmp[i][k] %= MOD; } return tmp; } void operator *= (matrix x){*this = *this * x;} matrix operator ^ (LL x){ matrix ret(row, col); for (int i = 0; i < col; i++) ret[i][i] = 1; matrix tmp = *this; for (; x; x >>= 1, tmp *= tmp){if (x&1) ret *= tmp;} return ret; } void print(){ for (int i = 0; i < row; i++){ for (int j = 0; j < col; j++) printf("%lld ",a[i][j]); puts(""); } }};int main(int argc, char const *argv[]){ #ifdef GoodbyeMonkeyKing freopen("in.txt","r",stdin);freopen("out.txt","w",stdout); #endif matrix rbq(7,7); rbq.a[0][0] = rbq.a[0][2] = rbq.a[0][6] = 1; rbq.a[0][1] = 2; rbq.a[0][3] = rbq.a[0][5] = 4; rbq.a[0][4] = 6; rbq.a[1][0] = 1; rbq.a[2][2] = rbq.a[2][6]= 1; rbq.a[2][3] = rbq.a[2][5] =4; rbq.a[2][4] = 6; rbq.a[3][3] = rbq.a[3][6] = 1; rbq.a[3][4] = rbq.a[3][5] = 3; rbq.a[4][4] = rbq.a[4][6] = 1; rbq.a[4][5] = 2; rbq.a[5][5] = rbq.a[5][6] = 1; rbq.a[6][6] = 1; int t; cin>>t; while(t--) { LL n,a,b; cin>>n>>a>>b; matrix fst(7,1); fst.a[0][0] = b; fst.a[1][0] = a; fst.a[2][0] = 16; fst.a[3][0] = 8; fst.a[4][0] = 4; fst.a[5][0] = 2; fst.a[6][0] = 1; matrix tis = rbq; tis = tis^(n-2); tis *= fst; cout<<tis.a[0][0]%MOD<<endl; } return 0; }
阅读全文
0 0
- 快速矩阵快速幂
- 转移矩阵+矩阵快速幂
- 矩阵乘法 矩阵快速幂
- 构造矩阵+矩阵快速幂
- 矩阵快速幂,矩阵加法,矩阵乘法
- 快速幂||矩阵快速幂
- 快速幂&矩阵快速幂
- 快速幂,矩阵快速幂
- 快速幂 矩阵快速幂
- 快速幂&矩阵快速幂
- 【快速幂】【矩阵快速幂】
- 快速幂和快速矩阵
- poj3070--矩阵 快速幂
- POJ3233矩阵快速幂
- poj3070Fibonacci 矩阵快速幂
- 矩阵的快速幂
- 矩阵快速幂
- 矩阵的快速幂
- 手机Android音视频采集与直播推送,实现单兵、移动监控类应用
- PHP二维数组根据某个字段排序
- c#文件下载示例的4种方法
- wordpress无法建立目录wp-contents/uploads/***/***没有上级目录的写权限
- MyEclipse10中配置开发Python所需要的PyDev 绝对靠谱
- 矩阵快速幂
- Meta标签与搜索引擎优化
- 你知道 Android 的 MessageQueue.IdleHandler 吗?
- 171103 深度学习主机配置暑假攒机小记
- AJAX如何向服务器发送请求
- HttpUrlConnection用get和post请求发送参数
- [EMNLP2017]Adversarial Training for Relation Extraction
- Django与JS通信基本方法及原理;Django与jQuery通信;Django前后端传值
- JS制作计时器(毫秒级),简单、易懂