hdu 1590(Recursive sequence)矩阵快速幂
来源:互联网 发布:拍照软件里有小动物 编辑:程序博客网 时间:2024/05/29 14:50
题目链接:点击打开链接
第一次做快速幂的题目,题目很简单,就当做个笔记,题解就难得写了~~~
#include <iostream>#include <algorithm>#include <cstdio>#include <cstring>using namespace std;typedef long long LL;const LL fast_mi[7][7]={{1,4,6,4,1,0,0},{0,1,3,3,1,0,0},{0,0,1,2,1,0,0},{0,0,0,1,1,0,0},{0,0,0,0,1,0,0},{0,0,0,0,0,0,1},{1,4,6,4,1,2,1}};struct Martix{ const static int SIZE=7; const static LL MOD=2147493647; LL m[SIZE][SIZE]; Martix() {memset(m,0,sizeof(m));} Martix(const Martix& r) {memcpy(m,r.m,sizeof(r.m));} Martix(const int); Martix(const LL (*p)[SIZE]); Martix operator*(const Martix&)const; Martix fast_pow(int n)const;};Martix::Martix(const int r){ memset(m,0,sizeof(m)); for(int i=0;i<SIZE;i++) m[i][i]=r;}Martix::Martix(const LL (*p)[SIZE]){ for(int i=0;i<SIZE;i++) for(int j=0;j<SIZE;j++) m[i][j]=p[i][j];}Martix Martix::operator*(const Martix& r)const{ Martix ret; for(int i=0;i<SIZE;i++) for(int j=0;j<SIZE;j++) for(int k=0;k<SIZE;k++) ret.m[i][j]=(ret.m[i][j]+m[i][k]*r.m[k][j])%MOD; return ret;}Martix Martix::fast_pow(int n)const{ Martix ret(1),t(*this); int m=n; while(m) { if(m&1) ret=ret*t; t=t*t; m>>=1; } return ret;}int main(){ const Martix sub(fast_mi); const LL MOD=2147493647; int t; scanf("%d",&t); while(t--) { int n,a,b; scanf("%d%d%d",&n,&a,&b); const int seq[]={16,8,4,2,1,a,b}; Martix ret=sub.fast_pow(n-2); LL ans=0; for(int i=0;i<7;i++) ans=(ans+ret.m[6][i]*seq[i])%MOD; printf("%lld\n",ans); } return 0;}
阅读全文
0 0
- hdu 1590(Recursive sequence)矩阵快速幂
- HDU 5950 Recursive sequence(矩阵构造+矩阵快速幂)
- [hdu 5950 Recursive sequence] 矩阵快速幂
- HDU-5950-Recursive sequence-矩阵快速幂
- HDU 5950 Recursive sequence 矩阵快速幂
- [矩阵快速幂]HDU 5950 Recursive sequence
- HDU 5950 Recursive sequence(矩阵快速幂)
- hdu 5950 Recursive sequence(矩阵快速幂,构造)
- HDU 5950 Recursive sequence(矩阵快速幂)
- HDU 5950 Recursive sequence(矩阵快速幂)
- HDU 5950 Recursive sequence(矩阵快速幂)
- hdu 5950 Recursive sequence (矩阵快速幂)
- (矩阵快速幂)hdu5950 Recursive sequence
- Recursive sequence HDU --- 5950 【公式矩阵快速幂】
- hdu 5950 Recursive sequence(递推 快速幂矩阵)
- 2016 沈阳 1003 Recursive sequence(hdu 5950)矩阵快速幂
- HDU5950 Recursive sequence(矩阵快速幂)
- HDU 5950 Recursive sequence(矩阵)
- 11.22学习计划
- day3_spring10_dao使用jdbcTemplate(注入过程)
- Big Event in HDU
- ERROR 2003: Can't connect to MySQL server on 'localhost' (10061)
- typedef的用法
- hdu 1590(Recursive sequence)矩阵快速幂
- 第六题 Sort对于超大量的数据输出前n个最大的数据(思想还是hash)
- 【Scikit-Learn 中文文档】高斯过程
- 关于top命令
- 服务器上自己新建sh文件运行Permission denied的解决办法
- 转--Approximate Inference(近似推断,变分推断,KL散度,平均场, Mean Field )
- 模拟好题 E
- JS之JSON
- Anaconda虚拟环境迁移小记录