HDU-5950-Recursive sequence-矩阵快速幂
来源:互联网 发布:java 开源权限框架 编辑:程序博客网 时间:2024/05/29 15:28
题目链接
题意:给出
F[1]和F[2],F[i]=F[i−1]+F[i−1]∗2+i4
求F[n]
思路:明显的构造矩形快速幂,将n^4展开就好了
#include<bits/stdc++.h>const long long mod = 2147493647;using namespace std;struct mat { long long a[10][10];}ans,tt;mat mul(mat x,mat y) { mat tt; for(int i=1;i<=7;i++) for(int j=1;j<=7;j++) { tt.a[i][j]=0; for(int k=1;k<=7;k++) { tt.a[i][j]+=x.a[i][k]*y.a[k][j]; tt.a[i][j]%=mod; } } return tt;}int main(){ int t; long long a,b,n; scanf("%d",&t); while(t--) { scanf("%lld%lld%lld",&n,&a,&b); if(n==1) { printf("%lld\n",a); continue; } if(n==2) { printf("%lld\n",b); continue; } memset(ans.a,0,sizeof ans.a); memset(tt.a,0,sizeof tt.a); for(int i=1;i<=7;i++) { ans.a[i][i]=1; } tt.a[1][1]=1;tt.a[1][2]=2;tt.a[1][3]=1;tt.a[1][4]=4;tt.a[1][5]=6;tt.a[1][6]=4;tt.a[1][7]=1; tt.a[2][1]=1; tt.a[3][3]=1;tt.a[3][4]=4;tt.a[3][5]=6;tt.a[3][6]=4;tt.a[3][7]=1; tt.a[4][4]=1;tt.a[4][5]=3;tt.a[4][6]=3;tt.a[4][7]=1; tt.a[5][5]=1;tt.a[5][6]=2;tt.a[5][7]=1; tt.a[6][6]=1;tt.a[6][7]=1; tt.a[7][7]=1; n-=2; while(n) { if(n&1LL) { ans=mul(ans,tt); } tt=mul(tt,tt); n/=2; } long long tot=(ans.a[1][1]*b%mod+ans.a[1][2]*a%mod+ans.a[1][3]*16%mod+ans.a[1][4]*8%mod +ans.a[1][5]*4%mod+ans.a[1][6]*2%mod+ans.a[1][7])%mod; printf("%lld\n",tot); } return 0;}
0 0
- [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(矩阵快速幂)
- Recursive sequence HDU --- 5950 【公式矩阵快速幂】
- HDU 5950 Recursive sequence(矩阵快速幂)
- HDU 5950 Recursive sequence(矩阵快速幂)
- hdu 5950 Recursive sequence (矩阵快速幂)
- hdu 5950 Recursive sequence(递推 快速幂矩阵)
- hdu 5950 Recursive sequence(矩阵快速幂,经典矩阵构造方法)
- hdu 1590(Recursive sequence)矩阵快速幂
- 2016 沈阳 1003 Recursive sequence(hdu 5950)矩阵快速幂
- HDU 5950 Recursive sequence 【递推+矩阵快速幂】 (2016ACM/ICPC亚洲区沈阳站)
- ICPC 沈阳站C题 HDU 5950 Recursive sequence 矩阵快速幂 线性递推
- 协议栈各层对收到的帧过滤过程
- PHP 常用日期函数
- Docker学习笔记(1)-- 如何安装Docker
- 第七周项目6-停车场模拟
- sizeof
- HDU-5950-Recursive sequence-矩阵快速幂
- 素数筛-CodeForces 327BHungry Sequence
- JAVASE之socket编程
- 如何在Linux下进行stc51单片机的开发
- HttpClient学习笔记 --发送Http和Https请求
- 微信公众平台开发(102) 模板消息
- 单例模式
- 新开始
- Android逆向基础笔记—Android NDK开发1环境的配置及介绍