[BZOJ4002]JLOI2015有意义的字符串|矩阵乘法
来源:互联网 发布:java日志等级 编辑:程序博客网 时间:2024/06/03 13:03
题目和字符串有啥关系吗。。。
熟悉特征方程就容易发现这其实是一个
#include<cstdio>#include<iostream>#include<memory.h>#include<cmath>#define p 7528443412579576937ul#define ll unsigned long longusing namespace std;struct ju{ ll a[2][2]; int n,m;}ans,t;ll b,d,n;ll mul(ll a,ll b){ if (b>a) swap(a,b); if (b==0) return 0ll; ll c=mul(a,b/2); c=c*2%p; if (b%2==1) c=(c+a)%p; return c;}ju operator*(ju a,ju b){ ju ans; memset(ans.a,0,sizeof(ans.a)); ans.n=a.n;ans.m=b.m; for (int i=0;i<a.n;i++) for (int j=0;j<a.m;j++) for (int k=0;k<b.m;k++) ans.a[i][k]=(ans.a[i][k]+mul(a.a[i][j],b.a[j][k]))%p; return ans;}ju pow(ju a,ll b){ if (b==1) return a; ju c=pow(a,b/2); c=c*c; if (b%2==1) c=c*a; return c;}int main(){ cin>>b>>d>>n; if (n==1) {cout<<b;return 0;} if (n==0) {cout<<1;return 0;} t.a[0][0]=0ll;t.a[0][1]=1ll;t.a[1][0]=((d-b*b)/4)%p;t.a[1][1]=b%p; t.n=t.m=ans.n=2;ans.m=1; ans.a[0][0]=2;ans.a[1][0]=b%p; ans=pow(t,n-1)*ans; if (d!=b*b&&n%2==0) ans.a[1][0]=(ans.a[1][0]-1+p)%p; cout<<ans.a[1][0];}
0 0
- [BZOJ4002]JLOI2015有意义的字符串|矩阵乘法
- 【BZOJ4002】【JLOI2015】有意义的字符串 推公式+矩阵乘法
- [BZOJ4002][JLOI2015]有意义的字符串(结论+矩阵乘法)
- [题解]bzoj4002(JLOI2015)有意义的字符串
- [数列通项 矩阵快速幂] BZOJ4002 [JLOI2015]有意义的字符串
- BZOJ4002 有意义的字符串
- JLOI2015有意义的字符串
- 4002: [JLOI2015]有意义的字符串
- bzoj 4002 [JLOI2015]有意义的字符串 数学
- bzoj 4002: [JLOI2015]有意义的字符串(特征根法+矩阵快速幂)
- 【矩阵乘法】:矩阵乘法的基本实现
- 51nod 1197 字符串的数量 V2 dp+矩阵乘法
- 矩阵的思考-矩阵乘法
- 矩阵的乘法
- 矩阵的乘法问题
- 矩阵乘法的模板
- 矩阵乘法的疑惑
- 矩阵乘法的程序
- [leetcode] Gas Station
- LINUX下配置JDK环境变量
- No such table xxx错误的原因、解决办法:
- 向github、coding上提交项目
- 程序员的量化交易之路(37)--Lean之DataStream数据流5
- [BZOJ4002]JLOI2015有意义的字符串|矩阵乘法
- Android仓库管理系统(单机版)
- Jquery在两个HTML页面之间传递参数
- unity平台的预处理
- Oracle的SQL优化一
- 6月20日
- AspNetPager
- [BZOJ2730]HNOI2012矿场搭建|割点
- PageRank算法简介及Map-Reduce实现