2013 Multi-University Training Contest 9 1011 Arc of Dream
利用递推关系构建矩阵 然后矩阵快速幂
1 #include<cstdio> 2 #include<cstring> 3 typedef long long LL; 4 const int mod=1000000007; 5 struct matrix 6 { 7 LL m[5][5]; 8 matrix(){memset(m,0,sizeof(m));} 9 matrix operator*(const matrix &a)const 10 { 11 matrix tmp; 12 for(int i=0;i<5;i++) 13 for(int j=0;j<5;j++) 14 for(int k=0;k<5;k++) 15 tmp.m[i][j]=(tmp.m[i][j]+m[i][k]*a.m[k][j]%mod)%mod; 16 return tmp; 17 } 18 }e; 19 matrix pow(matrix a,LL n) 20 { 21 if(n==1) return a; 22 if(n%2) 23 { 24 matrix tmp=pow(a,n/2); 25 return tmp*tmp*a; 26 } 27 else 28 { 29 matrix tmp=pow(a,n/2); 30 return tmp*tmp; 31 } 32 } 33 int main() 34 { 35 LL n; 36 while(scanf("%lld",&n)!=EOF) 37 { 38 LL A0,AX,AY,B0,BX,BY; 39 scanf("%lld%lld%lld%lld%lld%lld",&A0,&AX,&AY,&B0,&BX,&BY); 40 if(n==0) {printf("0\n");continue;} 41 LL input[5][5]={AX*BX%mod,AX*BY%mod,AY*BX%mod,AY*BY%mod,0,0,AX%mod,0,AY%mod,0,0,0,BX%mod,BY%mod,0,0,0,0,1,0,AX*BX%mod,AX*BY%mod,AY*BX%mod,AY*BY%mod,1}; 42 LL a[5]={A0*B0%mod,A0%mod,B0%mod,1,A0*B0%mod}; 43 for(int i=0;i<5;i++) 44 for(int j=0;j<5;j++) 45 e.m[i][j]=input[i][j]; 46 if(n==1) { printf("%lld\n",a[4]);continue;} 47 matrix ans=pow(e,n-1); 48 LL answer=0; 49 for(int i=0;i<5;i++) 50 answer=(answer+ans.m[4][i]*a[i]%mod)%mod; 51 printf("%lld\n",answer); 52 } 53 return 0; 54 }
转载于:https://www.cnblogs.com/sooflow/p/3272688.html
2013 Multi-University Training Contest 9 1011 Arc of Dream相关推荐
- 2019 Multi-University Training Contest 1 - 1011 - Function - 数论
http://acm.hdu.edu.cn/showproblem.php?pid=6588 新学到了一个求n以内与m的gcd的和的快速求法.也就是下面的S1. ①求: $ \sum\limits_{ ...
- 2017 Multi-University Training Contest - Team 7:1011. Kolakoski(模拟)
其他题目题解: 2017 Multi-University Training Contest - Team 7:1005. Euler theorem 2017 Multi-University Tr ...
- 2017 Multi-University Training Contest - Team 7:1003. Color the chessboard(...)
其他题目题解: 2017 Multi-University Training Contest - Team 7:1005. Euler theorem 2017 Multi-University Tr ...
- 2017 Multi-University Training Contest - Team 7:1002. Build a tree(递归)
其他题目题解: 2017 Multi-University Training Contest - Team 7:1005. Euler theorem 2017 Multi-University Tr ...
- 2017 Multi-University Training Contest - Team 7:1010. Just do it(组合数?)
其他题目题解: 2017 Multi-University Training Contest - Team 7:1005. Euler theorem 2017 Multi-University Tr ...
- 2017 Multi-University Training Contest - Team 7:1008. Hard challenge(模拟)
其他题目题解: 2017 Multi-University Training Contest - Team 7:1005. Euler theorem 2017 Multi-University Tr ...
- 2017 Multi-University Training Contest - Team 7:1005. Euler theorem(答案是(n+3)/2)
其他题目题解: 2017 Multi-University Training Contest - Team 7:1003. Color the chessboard 2017 Multi-Univer ...
- 2016 Multi-University Training Contest 10
solved 7/11 2016 Multi-University Training Contest 10 题解链接 分类讨论 1001 Median(BH) 题意: 有长度为n排好序的序列,给两段子 ...
- 2019 Multi-University Training Contest 7 部分补题
2019 Multi-University Training Contest 7 部分补题 这场比赛三个人一起组队,比赛期间自己感觉并没有奉献多少东西,所以补题.而且总感觉比赛到后期很乏力(没力气那种 ...
最新文章
- android html5播放器,android Html5播放器混音解决方案
- 【OpenCV3】彩色映射——cv::applyColorMap()与cv::LUT()详解
- 使用OpenCV实现图像中的文字切割
- 工业用微型计算机(12)-指令系统(7)
- sqlserver常用函数/存储过程/数据库角色
- 使用无限生命期Session的方法
- flex 图片上传并以二进制保存到oracle数据库,flex 加载并显示图片 图片转化成二进制...
- mac mysql创建本地数据库_【mac】配置本地数据库
- CMake PROJECT_BINARY_DIR和PROJECT_SOURCE_DIR区别
- sort对结构体排序
- MFC中属性表单和向导对话框的使用
- ap sat_先准备SAT? SAT II?还是AP?没有哪一个比另一个更重要!
- 程序应该怎样写比较规范
- 锂离子电池容量保持率和容量恢复率
- Windows 2008 R2 远程桌面服务(四)运行RemoteApp程序
- 【深度学习21天学习挑战赛】备忘篇: from_tensor_slices的作用和用法
- 所有大学都教Java,培训班也输出了大量Java程序员,为什么社会上的Java程序员还没有饱和?
- Float浮动与清除浮动
- 绘画教程:动漫角色中男生女生脸部画法
- lotus-miner 元数据备份
热门文章
- DCMTK:使用dcmimage库将DICOM图像转换为PPM或PGM
- VTK:绘图之ChartMatrix
- Qt Creator设置Nimble
- OpenGL GLSL Shader Subroutines函数的实例
- C语言将正整数转换为字符串(附完整源码)
- 虚函数和纯虚函数的区别?
- c++引用专题之常引用
- linux重新加载php.ini,linux修改php.ini后重新加载配置文件命令
- linux新建备份数据库的脚本文件,Linux下shell脚本:自动每日备份网站文件和数据库上传FTP空间...
- 如何在私服上传jar包