当前位置:   article > 正文

分块+矩阵快速幂_分块矩阵的幂

分块矩阵的幂

http://acm.hdu.edu.cn/showproblem.php?pid=6395

P/i会有相同的一段,所以想到分块,这个也经常用

\begin{bmatrix} F(n)\\ F(n-1) \\ 1 \end{bmatrix}= \begin{bmatrix} d &c & x\\ 1&0 &0 \\ 0& 0 &1 \end{bmatrix}\begin{bmatrix} F2\\ F1\\ 1 \end{bmatrix}

  1. #include<algorithm>
  2. #include <iostream>
  3. #include <stdlib.h>
  4. #include <string.h>
  5. #include <stdio.h>
  6. #include <math.h>
  7. #include <time.h>
  8. #include <vector>
  9. #include <bitset>
  10. #include <queue>
  11. #include <map>
  12. #include <set>
  13. using namespace std;
  14. typedef long long ll;
  15. const int Mod=1e9+7;
  16. int A,B,C,D,n,P;
  17. struct Mat
  18. {
  19. int t[3][3];
  20. Mat(){memset(t,0,sizeof t);}
  21. }I;
  22. Mat operator * (Mat a,Mat b)
  23. {
  24. Mat c;
  25. for(int i=0;i<3;i++)
  26. for(int j=0;j<3;j++)
  27. {
  28. ll t=0;
  29. for(int k=0;k<3;k++)
  30. t+=(ll)a.t[i][k]*b.t[k][j];
  31. c.t[i][j]=t%Mod;
  32. }
  33. return c;
  34. }
  35. Mat Pow(Mat a,int b)
  36. {
  37. Mat c=I;
  38. while(b)
  39. {
  40. if(b&1)
  41. c=c*a;
  42. a=a*a;b>>=1;
  43. }
  44. return c;
  45. }
  46. void solve()
  47. {
  48. scanf("%d%d%d%d%d%d",&A,&B,&C,&D,&P,&n);
  49. if(n==1)
  50. {
  51. cout<<A<<endl;
  52. return;
  53. }
  54. Mat f;
  55. f.t[0][0]=D;
  56. f.t[0][1]=C;
  57. f.t[1][0]=1;
  58. f.t[2][2]=1;
  59. for(int i=3;i<=n;)
  60. {
  61. if(P/i==0)
  62. {
  63. Mat w=f;
  64. w=Pow(w,n-i+1);
  65. cout<<(w.t[0][0]*(ll)B+w.t[0][1]*(ll)A+w.t[0][2])%Mod<<endl;return;
  66. }
  67. int j=min(n,P/(P/i));
  68. Mat w=f;w.t[0][2]=P/i;
  69. w=Pow(w,j-i+1);
  70. ll a=(w.t[1][0]*(ll)B+w.t[1][1]*(ll)A+w.t[1][2])%Mod,b=(w.t[0][0]*(ll)B+w.t[0][1]*(ll)A+w.t[0][2])%Mod;
  71. A=a;B=b;
  72. i=j+1;
  73. }
  74. cout<<B<<endl;
  75. }
  76. int main()
  77. {
  78. I.t[1][1]=I.t[0][0]=I.t[2][2]=1;
  79. int t;cin>>t;
  80. while(t--)
  81. solve();
  82. return 0;
  83. }

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Li_阴宅/article/detail/941908
推荐阅读
相关标签
  

闽ICP备14008679号