思路:

十进制快速幂。

  1. #include <stdio.h>//sprintf
  2. #include <cstdlib>////malloc exit strcat itoa system("cls")
  3. #include <iostream>//pair
  4. #include <fstream>
  5. #include <bitset>
  6. //#include <map> https://ac.nowcoder.com/acm/contest/885/B
  7. #include <vector>
  8. #include <stack>
  9. #include <set>
  10. #include <string.h>//strstr
  11. #include <string>
  12. #include <time.h>//srand(((unsigned)time(NULL))); Seed n=rand()%10 - 0~9;
  13. #include <cmath>
  14. #include <queue>//priority_queue<long long, vector<long long>, greater<long long> > q;
  15. #include <vector>
  16. //#include <math.h>
  17. //#include <windows.h> https://www.nitacm.com/problem_show.php?pid=222
  18. #include <algorithm>//sort + unique : sz=unique(b+1,b+n+1)-(b+1);+nth_element(first, nth, last, compare)
  19. using namespace std;
  20. #define pr printf
  21. #define sc scanf
  22. #define fo(a,b,c) for((a)=(b);(a)<=(c);(a)++)//register long long i
  23. #define fr(a,b,c) for((a)=(b);(a)>=(c);(a)--)
  24. #define mem(a,b) memset((a),(b),sizeof((a)))
  25. const double e=2.718281828;
  26. const double PI=acos(-1.0);
  27. const double ESP=1e-;
  28. const long long inf=;
  29. const long long N=;
  30. long long mod;
  31. const long long MAXN=;
  32.  
  33. long long x0,x1,a,b,MOD;
  34. struct MAT
  35. {
  36. long long mat[MAXN][MAXN];
  37. MAT()
  38. {
  39. mat[][]=mat[][]=;//对角矩阵 E;
  40. mat[][]=mat[][]=;
  41. }
  42. MAT operator*(const MAT &a)const
  43. {
  44. MAT b;
  45. long long i,j,k;
  46. mem(b.mat,);
  47. fo(i,,MAXN-)
  48. {
  49. fo(j,,MAXN-)
  50. {
  51. fo(k,,MAXN-)
  52. {
  53. b.mat[i][j]=(b.mat[i][j]+mat[i][k]*a.mat[k][j]);
  54. b.mat[i][j]%=mod;
  55. }
  56. }
  57. }
  58. return b;
  59. }
  60. }transfer;
  61.  
  62. MAT Mqpow(MAT x,long long n)
  63. {
  64. struct MAT temp;
  65. while(n)
  66. {
  67. if(n&)
  68. temp=temp*x;
  69. x=x*x;
  70. n>>=;
  71. }
  72. return temp;
  73. }
  74.  
  75. char n[N];
  76. struct MAT mark[],start;
  77. int main()
  78. {
  79. sc("%lld%lld%lld%lld%s%lld",&x0,&x1,&a,&b,n,&MOD);
  80. // mem(transfer.mat,0);
  81. mod=MOD;
  82. transfer.mat[][]=a,transfer.mat[][]=b;
  83. transfer.mat[][]=,transfer.mat[][]=;
  84. start.mat[][]=x1,start.mat[][]=x0;
  85. mark[]=transfer;
  86. for(int i=;i<=;++i)
  87. mark[i]=transfer*mark[i-];
  88. int l=strlen(n);
  89. struct MAT ans;
  90. for(int i=;i<=l-;++i)
  91. {
  92. ans=Mqpow(ans,);
  93. ans=ans*mark[n[i]-''];
  94. }
  95. start=ans*start;
  96. pr("%lld\n",start.mat[][]%MOD);
  97. return ;
  98. }

十进制快速幂(牛客多校第五场)-- generator 1的更多相关文章

  1. 2019牛客多校第五场 generator 1——广义斐波那契循环节&&矩阵快速幂

    理论部分 二次剩余 在数论中,整数 $X$ 对整数 $p$ 的二次剩余是指 $X^2$ 除以 $p$ 的余数. 当存在某个 $X$,使得式子 $X^2 \equiv d(mod \ p)$ 成立时,称 ...

  2. generator 1(2019年牛客多校第五场B题+十进制矩阵快速幂)

    目录 题目链接 思路 代码 题目链接 传送门 思路 十进制矩阵快速幂. 代码 #include <set> #include <map> #include <deque& ...

  3. 2019牛客多校第五场B generator 十进制快速幂

    generator 1 题意 给出\(x_0,x_1,a,b\)已知递推式\(x_i=a*x_{i-1}+b*x_{i-2}\),出个n和mod,求\(x_n\) (n特别大) 分析 比赛的时候失了智 ...

  4. 牛客多校第五场B generator1(十进制矩阵快速幂)题解

    题意: 已知 \(X_i = a * X_{i - 1} + b * X_{i - 2}\),现给定\(X_0,X_1,a,b\),询问\(X^n \mod p\),其中\(n <= 10^{1 ...

  5. 2019牛客多校第五场 B - generator 1 矩阵快速幂+十倍增+二进制倍增优化

    B - generator 1 题意 给你\(x_{0}.x_{1}.a.b.b.mod\),根据\(x_{i} = a*x_{i-1} + b*x_{i-2}\)求出\(x_{n}\) 思路 一般看 ...

  6. 2019牛客多校第五场B-generator 1(矩阵快速幂)

    generator 1 题目传送门 解题思路 矩阵快速幂.只是平时的矩阵快速幂是二进制的,这题要用十进制的快速幂. 代码如下 #include <bits/stdc++.h> #defin ...

  7. 牛客多校第五场 B generator 1 矩阵快速幂

    题意: 给定$x_0,x_1,a,b,n,mod, x_i=a*x_{i-1}+b*x_{i-2}$ ,求$x_n % mod$ n最大有1e6位 题解: 矩阵快速幂. 巨大的n并不是障碍,写一个十进 ...

  8. 2019 牛客多校第五场 B generator 1

    题目链接:https://ac.nowcoder.com/acm/contest/885/B 题目大意 略. 分析 十进制矩阵快速幂. 代码如下 #include <bits/stdc++.h& ...

  9. 牛客多校第五场 F take

    链接:https://www.nowcoder.com/acm/contest/143/F来源:牛客网 题目描述 Kanade has n boxes , the i-th box has p[i] ...

随机推荐

  1. codeforces643D

    阿狸的基环内向树森林 Background 当阿狸醒来的时候,发现自己处在基环内向森林的深处,阿狸渴望离开这个乌烟瘴气的地方.“明天还有与桃子的约会呢”,阿狸一边走一边说,“可是,这个森林的出口在哪儿 ...

  2. javaScript用正则来获取url传递的参数

    用window.location.href获取url再js正则来获得需要的参数: 这个正则有多种写法,这里我选择这样写,要查找的属性名我直接以参数的形式传进去,用正则查找,以"?&# ...

  3. HDU 5884 Sort ——(K叉哈夫曼树)

    这题真心比较奥义,先见这个人的博客:http://blog.csdn.net/libin66/article/details/52565484 补0的方法是使得其满足成为满K叉树,而其博客中所说的“所 ...

  4. OSI7层模型

    为什么来写一个osi7层模型的随便呐? 因为自己对osi模型一点不熟悉 只知道里面的协议 要学渗透必先学习osi 这是一个osi7层的大体图片 接下来我们会对每一层进行详细的解答 这是五层模型 接下来 ...

  5. springMVC中的ModelAndView说明

    ModelAndView 类别就如其名称所示,是代表了Spring Web MVC程式中呈现画面时所使用Model资料物件与View资料物件,由于Java程式中一次只能返回一个物件,所以ModelAn ...

  6. cin.clear()与cin.sync()的使用

    cin.clear()与cin.sync()使用是有先后顺序的. 他们的作用: cin.clear(); //将流中的所有状态都重设为有效值 cin.sync();//清空流 在输入错误的情况下,如果 ...

  7. Angular5.0之 安装指定版本Angular CLI

    我们可能会发现按照网上的方式下载安装后,使用Angular CLI生成的项目并不是我们想要的Angular的版本,因为在我们没有指定安装版本的前提下,默认会下载最新的版本安装,然而不同的Angular ...

  8. JNI的开发步骤

    使用C函数实现Java本地方法: 1. 在java代码里面声明一个native的方法 public native String helloFromC(); 2. 在工程目录下面创建一个jni的文件夹 ...

  9. 给定一个字符串,把字符串内的字母转换成该字母的下一个字母,a换成b,z换成a,Z换成A,如aBf转换成bCg, 字符串内的其他字符不改变,给定函数,编写函数 void Stringchang(const char*input,char*output)其中input是输入字符串,output是输出字符串

    import java.util.Scanner; /*** * 1. 给定一个字符串,把字符串内的字母转换成该字母的下一个字母,a换成b,z换成a,Z换成A,如aBf转换成bCg, 字符串内的其他字 ...

  10. WPF Slider Tickbar 中显示数值

    class CustomTickBar : TickBar { protected override void OnRender(System.Windows.Media.DrawingContext ...