HDU 6050 Funny Function(矩阵)
来源:互联网 发布:重庆理工大学网络教育 编辑:程序博客网 时间:2024/05/21 18:41
#include<cstdio>#include<cstring>#include<iostream>const int mod=1e9+7;using namespace std;typedef long long LL;LL n,m;struct Matrix{ LL mat[2][2]; Matrix operator -(Matrix &tmp) { Matrix res; for(int i=0; i<2; i++) for(int j=0; j<2; j++) { res.mat[i][j]=mat[i][j]-tmp.mat[i][j]+mod; res.mat[i][j]%=mod; } return res; } Matrix operator *(Matrix &tmp) { Matrix res; memset(res.mat,0,sizeof(res.mat)); for(int i=0; i<2; ++i) for(int j=0; j<2; ++j) for(int k=0; k<2; ++k) { res.mat[i][j]+=mat[i][k]*tmp.mat[k][j]; res.mat[i][j]%=mod; } return res; }};Matrix pow_M(Matrix a,LL 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=ret*temp; temp=temp*temp; n>>=1; } return ret;}LL pow_m(LL a,LL n){ LL ret=1; LL temp=a%mod; while(n) { if(n&1) { ret*=temp; ret%=mod; } temp*=temp; temp%=mod; n>>=1; } return ret;}int main(){ int T; scanf("%d",&T); while(T--) { scanf("%I64d %I64d",&n,&m); Matrix A,B,C; A.mat[0][0]=0; A.mat[0][1]=2; A.mat[1][0]=1; A.mat[1][1]=1; if(n&1) { B.mat[0][0]=-1; B.mat[0][1]=2; B.mat[1][0]=1; B.mat[1][1]=0; } else { B.mat[0][0]=1; B.mat[0][1]=0; B.mat[1][0]=0; B.mat[1][1]=1; } C=pow_M(pow_M(A,n)-B,m-1); printf("%I64d\n",(C.mat[0][0]+C.mat[1][0])%mod); }}
阅读全文
0 0
- HDU 6050 Funny Function(矩阵)
- hdu 6050 Funny Function (矩阵快速幂)
- HDU 6050 Funny Function 矩阵快速幂
- hdu 6050 Funny Function (构造矩阵)
- hdu 6050Funny Function矩阵快速幂
- Funny Function(HDU 6050)
- HDU 6050 Funny Function
- hdu 6050 Funny Function
- hdu 6050 funny function
- HDU-6050 Funny Function
- HDU 6050 Funny Function
- HDU 6050 Funny Function
- HDU 6050 Funny Function
- HDU 6050 Funny Function
- hdu 6050 Funny Function
- (矩阵快速幂, 数学公式推导)HDU 6050 Funny Function
- HDU 6050 Funny Function(矩阵快速幂或公式)
- HDU 6050 Funny Function(快速幂)
- BI系统研究(初级)
- BZOJ 2565 双回文子串 Manacher 蜜汁贪心QQQ
- POJ1739 Tony's Tour
- 接口,内部类,垃圾回收机制
- Java的包装类
- HDU 6050 Funny Function(矩阵)
- Python分支结构
- bzoj1394: [Baltic2005]ancient
- 设置自定义Dialog的大小和位置
- install4j的使用
- Python matplotlib pyplot中title() xlabel() ylabel()无法显示在中文(方框乱码)的解决办法
- Python运用urllib2和BeautifulSoup爬取网站ZOL桌面壁纸上的精美电脑壁纸
- java学习整理20170728
- 信号灯集详细使用说明