博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdu 4686 Arc of Dream
阅读量:6760 次
发布时间:2019-06-26

本文共 1393 字,大约阅读时间需要 4 分钟。

矩阵快速幂:
1,A0%N,B0%N,A0*B0%N,A0*B0%N;
1,AY%N,BY%N,AY*BY%N,AY*BY%N;
AX%N, 0,AX*BY%N,AX*BY%N;
BX%N,BX*AY%N,BX*AY%N;
AX*BX%N,AX*BX%N;
1;
#include 
#include
#define N 1000000007#define LL long longstruct matrix{ LL num[5][5];};matrix p,m,q;matrix cal(matrix x,matrix y){ for(int i=0; i<5; ++i) for(int j=0; j<5; ++j) { q.num[i][j]=0; for(int k=0; k<5; ++k) q.num[i][j]=(q.num[i][j]+x.num[i][k]*y.num[k][j]%N)%N; } return q;}void solve(LL n){ while(n) { if(n&1) m=cal(m,p); n>>=1; p=cal(p,p); }}int main(){// freopen("in.txt","r",stdin); LL AX,AY,A0,BX,BY,B0,n; while(scanf("%I64d%I64d%I64d%I64d%I64d%I64d%I64d",&n,&A0,&AX,&AY,&B0,&BX,&BY)!=EOF) { if(n==0) { printf("0\n"); continue; } memset(m.num,0,sizeof(m.num)); memset(p.num,0,sizeof(p.num)); m.num[0][0]=1,m.num[0][1]=A0%N,m.num[0][2]=B0%N,m.num[0][3]=A0*B0%N,m.num[0][4]=A0*B0%N; p.num[0][0]=1,p.num[0][1]=AY%N,p.num[0][2]=BY%N,p.num[0][3]=AY*BY%N,p.num[0][4]=AY*BY%N; p.num[1][1]=AX%N,p.num[1][3]=AX*BY%N,p.num[1][4]=AX*BY%N; p.num[2][2]=BX%N,p.num[2][3]=BX*AY%N,p.num[2][4]=BX*AY%N; p.num[3][3]=AX*BX%N,p.num[3][4]=AX*BX%N; p.num[4][4]=1; solve(n-1); printf("%I64d\n",m.num[0][4]); } return 0;}

 

转载地址:http://dvbeo.baihongyu.com/

你可能感兴趣的文章
硬核NeruIPS 2018最佳论文,一个神经了的常微分方程
查看>>
个推Node.js 微服务实践:基于容器的一站式命令行工具链
查看>>
Express源码学习-路由篇
查看>>
Android平台上图片/视频选择,编辑和压缩的一站式解决方案
查看>>
从零开始撸一个Fresco之总结
查看>>
我想把 FileProvider 聊的更透彻一些
查看>>
2018年8月Top 10 JavaScript开源项目
查看>>
手游开发如何选择后端服务
查看>>
开学季你最想要的这10本编程新书
查看>>
node中的http会了吗? 来手写一个属于自己的'cgp-server'静态服务
查看>>
守护客户数据价值:企业级NewSQL HTAP分布式云TBase架构详解
查看>>
Web3与智能合约交互实战
查看>>
双十一你想要的,我们提前给你备好了——七牛云产品0.1元起购
查看>>
视频直播:Windows中各类画面源的截取和合成方法总结
查看>>
SQL老司机,在SQL中计算 array & map & json数据
查看>>
绘制图片
查看>>
前端工程优化:javascript的优化小结
查看>>
Android 动画实战-仿微博雷达功能
查看>>
leetCode 13 Roman to Integer
查看>>
SpringBoot高级篇Redis之Hash数据结构使用姿势
查看>>