矩阵优化的模板(用的时候注意要修改呀)
来源:互联网 发布:node实战 编辑:程序博客网 时间:2024/04/30 05:12
1.这个是我在算概率dp的时候用的一个~是浮点数啦,然后没有取余操作的~
struct Matrix{ double mat[2][2];};Matrix mul(Matrix a,Matrix b){ Matrix ret; for(int i=0;i<2;i++) for(int j=0;j<2;j++) { ret.mat[i][j]=0; for(int k=0;k<2;k++) ret.mat[i][j]+=a.mat[i][k]*b.mat[k][j]; } return ret;}Matrix pow_M(Matrix a,int n){ Matrix ret; memset(ret.mat,0,sizeof(ret.mat)); for(int i=0;i<2;i++)ret.mat[i][i]=1; Matrix temp=a; while(n) { if(n&1)ret=mul(ret,temp); temp=mul(temp,temp); n>>=1; } return ret;}
code:
#include <stdio.h>#include <algorithm>#include <iostream>#include <string.h>using namespace std;const int MOD=1e9+7;struct Matrix{ long long mat[2][2];};Matrix mul(Matrix a,Matrix b){ Matrix ret; for(int i=0;i<2;i++) for(int j=0;j<2;j++) { ret.mat[i][j]=0; for(int k=0;k<2;k++) { ret.mat[i][j]+=a.mat[i][k]*b.mat[k][j]; ret.mat[i][j]%=(MOD-1); } } return ret;}Matrix pow_M(Matrix a,int n){ Matrix ret; memset(ret.mat,0,sizeof(ret.mat)); ret.mat[0][0]=ret.mat[1][1]=1; Matrix temp=a; while(n) { if(n&1)ret=mul(ret,temp); temp=mul(temp,temp); n>>=1; } return ret;}long long pow_m(long long a,long long n){ long long ret=1; long long temp=a%MOD; while(n) { if(n&1) { ret*=temp; ret%=MOD; } temp*=temp; temp%=MOD; n>>=1; } return ret;}int main(){ int a,b,n; Matrix tmp; tmp.mat[0][0]=0; tmp.mat[0][1]=tmp.mat[1][0]=tmp.mat[1][1]=1; while(scanf("%d%d%d",&a,&b,&n)==3) { Matrix p=pow_M(tmp,n); //printf("%d %d %d %d\n",p.mat[0][0],p.mat[1][0],p.mat[0][1],p.mat[1][1]); int ans=(pow_m(a,p.mat[0][0])*pow_m(b,p.mat[1][0]))%MOD; printf("%d\n",ans); } return 0;}
题目是在这里了:http://www.cnblogs.com/kuangbin/archive/2013/05/21/3090793.html
ps:窝学了新的用法会再加上的...orz
0 0
- 矩阵优化的模板(用的时候注意要修改呀)
- 修改my.cnf的时候,一定要注意地方啊
- 在修改接口的时候,一定要注意向下兼容
- 洛谷 P1939 【模板】矩阵加速(数列):优化递推式的方法——矩阵快速幂
- 在ASPxGridView绑定的时候修改模板列的值
- dede cms修改模板的时候页面显示标签代码
- 用performSelector的时候要注意别内存泄露了
- 求职时候要记得注意的要点
- 延时调用的时候要注意
- 在MyEclipse中复制项目的时候要注意 修改过的项目)在修改项目的名字的时候同样要注意这一点!!!(且把以前名字发布的项目remove掉,重新发布修改过的项目) -------Ctrl+C --
- 有关矩阵的模板【模板】
- 图片设置的时候注意
- 矩阵乘法的模板
- spring中写字符串模板的时候注意不要使用#和$
- 模板类要注意的地方
- zen cart 模板 站内优化需要修改的几个地方
- XSL写的时候要注意的一个小问题
- ASP.NET : 自定义HttpModule的时候要注意的问题
- POJ 1573 Robot Motion(模拟)
- dos命令之find
- [日志分析]在nginx日志中,提取有效的request uri
- 【Win10】联想Z50-70升级到Win10,声音变成环绕声解决办法
- 织梦5.7DEDECMS标签大全
- 矩阵优化的模板(用的时候注意要修改呀)
- EJB学习笔记之十(BMT事务和CMT事务)
- jQuery FlexSlider插件的详细设置参数
- Unity3d实现画笔
- centos7 下安装Apache2+MariaDB+PHP5过程详解
- Qt中使用html语言对word进行图表操作
- poj 3280 字符串上的动态规划
- tablview性能优化&instrument详解
- 获得手势所在的图片坐标 & CGRectContainsPoint