利用递推关系构建矩阵 然后矩阵快速幂

 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相关推荐

  1. 2019 Multi-University Training Contest 1 - 1011 - Function - 数论

    http://acm.hdu.edu.cn/showproblem.php?pid=6588 新学到了一个求n以内与m的gcd的和的快速求法.也就是下面的S1. ①求: $ \sum\limits_{ ...

  2. 2017 Multi-University Training Contest - Team 7:1011. Kolakoski(模拟)

    其他题目题解: 2017 Multi-University Training Contest - Team 7:1005. Euler theorem 2017 Multi-University Tr ...

  3. 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 ...

  4. 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 ...

  5. 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 ...

  6. 2017 Multi-University Training Contest - Team 7:1008. Hard challenge(模拟)

    其他题目题解: 2017 Multi-University Training Contest - Team 7:1005. Euler theorem 2017 Multi-University Tr ...

  7. 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 ...

  8. 2016 Multi-University Training Contest 10

    solved 7/11 2016 Multi-University Training Contest 10 题解链接 分类讨论 1001 Median(BH) 题意: 有长度为n排好序的序列,给两段子 ...

  9. 2019 Multi-University Training Contest 7 部分补题

    2019 Multi-University Training Contest 7 部分补题 这场比赛三个人一起组队,比赛期间自己感觉并没有奉献多少东西,所以补题.而且总感觉比赛到后期很乏力(没力气那种 ...

最新文章

  1. android html5播放器,android Html5播放器混音解决方案
  2. 【OpenCV3】彩色映射——cv::applyColorMap()与cv::LUT()详解
  3. 使用OpenCV实现图像中的文字切割
  4. 工业用微型计算机(12)-指令系统(7)
  5. sqlserver常用函数/存储过程/数据库角色
  6. 使用无限生命期Session的方法
  7. flex 图片上传并以二进制保存到oracle数据库,flex 加载并显示图片 图片转化成二进制...
  8. mac mysql创建本地数据库_【mac】配置本地数据库
  9. CMake PROJECT_BINARY_DIR和PROJECT_SOURCE_DIR区别
  10. sort对结构体排序
  11. MFC中属性表单和向导对话框的使用
  12. ap sat_先准备SAT? SAT II?还是AP?没有哪一个比另一个更重要!
  13. 程序应该怎样写比较规范
  14. 锂离子电池容量保持率和容量恢复率
  15. Windows 2008 R2 远程桌面服务(四)运行RemoteApp程序
  16. 【深度学习21天学习挑战赛】备忘篇: from_tensor_slices的作用和用法
  17. 所有大学都教Java,培训班也输出了大量Java程序员,为什么社会上的Java程序员还没有饱和?
  18. Float浮动与清除浮动
  19. 绘画教程:动漫角色中男生女生脸部画法
  20. lotus-miner 元数据备份

热门文章

  1. DCMTK:使用dcmimage库将DICOM图像转换为PPM或PGM
  2. VTK:绘图之ChartMatrix
  3. Qt Creator设置Nimble
  4. OpenGL GLSL Shader Subroutines函数的实例
  5. C语言将正整数转换为字符串(附完整源码)
  6. 虚函数和纯虚函数的区别?
  7. c++引用专题之常引用
  8. linux重新加载php.ini,linux修改php.ini后重新加载配置文件命令
  9. linux新建备份数据库的脚本文件,Linux下shell脚本:自动每日备份网站文件和数据库上传FTP空间...
  10. 如何在私服上传jar包