2017第二次多校联合Funnyfunction
来源:互联网 发布:quickfix python 编辑:程序博客网 时间:2024/06/11 05:04
题目
题意:这个题意就不用说了吧
题解:矩阵快速幂
dalao博客
#include<bits/stdc++.h>using namespace std;#define ll long longconst ll mod=1e9+7;struct bbq{ ll a[2][2];};bbq mx(bbq a,bbq b){ bbq ans; memset(ans.a,0,sizeof ans.a); for(int i=0; i<2; i++) { for(int j=0; j<2; j++) { for(int k=0; k<2; k++) { ans.a[i][j]+=a.a[i][k]*b.a[k][j]%mod; ans.a[i][j]%=mod; } } } return ans;}bbq qmod(bbq a,ll n){ bbq ans; memset(ans.a,0,sizeof ans.a); ans.a[0][0]=ans.a[1][1]=1; while(n) { if(n%2==1)ans=mx(ans,a); a=mx(a,a); n/=2; } return ans;}int main(){ bbq a,b1,b0,ans; int t,ca=1; scanf("%d",&t); memset(a.a,0,sizeof a.a); memset(b0.a,0,sizeof b0.a); memset(b1.a,0,sizeof b1.a); a.a[0][0]=0; a.a[0][1]=2; a.a[1][0]=a.a[1][1]=1; b0.a[0][0]=b0.a[1][1]=1; b0.a[1][0]=b0.a[0][1]=0; b1.a[0][0]=-1; b1.a[0][1]=2; b1.a[1][0]=1; b1.a[1][1]=0; while(t--) { memset(ans.a,0,sizeof ans.a); ll n,m; scanf("%lld %lld",&n,&m); ans=qmod(a,n); if(n%2==0) { for(int i=0; i<2; i++) { for(int j=0; j<2; j++) ans.a[i][j]-=b0.a[i][j]; } } else { for(int i=0; i<2; i++) { for(int j=0; j<2; j++) ans.a[i][j]-=b1.a[i][j]; } } ans=qmod(ans,m-1); printf("%lld\n",(ans.a[0][0]+ans.a[1][0])%mod); }}
阅读全文
0 0
- 2017第二次多校联合Funnyfunction
- 2017第二次多校联合hdu6047Maximum Sequence
- 2017第二次多校联合Regular polygon
- 2017第二次多校联合hdu6053Tirck Gcd
- 2017第二次多校联合 hdu6052 tobemyboyfriend
- 2017第二次多校联合 hdu6045Is Derek lying?
- 2017第一次多校联合Balala Power!
- 2017第一次多校联合 1006Function
- 2017第一次多校联合 hdu6035Colorful Tree
- 2017第三次多校联合HDU6059
- 2017第三次多校联合hdu6060
- 2017第三次多校联合hdu6058
- 多校联合1004,hdu3832
- 2012多校联合(1
- 多校联合 8.24 Encode
- Trouble(多校联合)
- 2013----多校联合5
- 多校联合第三场
- 深度卷积网络CNN与图像语义分割
- json库范例3
- ios开发 UIPasteboard 的简单使用
- NYOJ_6 喷水装置(1)
- java图片从本地上传服务器
- 2017第二次多校联合Funnyfunction
- 散列表
- Jfinal框架两种启动方式
- zoj3537 凸包,最优三角形,区间dp
- 多线程
- mybatis 自动生成工具
- DateTime diff的计算相差月份bug
- Box Model
- deeplab---tools.py