思路:

十进制快速幂。

  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. jQuery文档操作之插入操作

    append() 语法 父元素.append(子元素) 解释:追加某元素,在父元素中添加新的子元素.子元素可以为:string/element(js对象)/jQuery元素 代码如下: var oli ...

  2. JQuery动画之淡入淡出动画

    1. 淡入动画 1.1 不带参数的淡入动画 格式: $(selector).fadeIn(); 示例代码: <!doctype html> <html lang="en&q ...

  3. 省市县镇村五级地址智能提取(标准地址源来自国家统计局官网)SpringBoot+Elasticsearch 5.6

    项目目的 根据传入的地址,智能提取所属的省市县镇村5级地址.例如:用户输入“江苏南通嗨安李堡镇陈庄村8组88号”,我们需要提取到江苏省  南通市  海安县(即便用户输入了错字,“海”写成了“嗨”) 李 ...

  4. [CSP-S模拟测试]:密码(数位DP+库默尔定理)

    题目描述 为了揭穿$SERN$的阴谋,$Itaru$黑进了$SERN$的网络系统.然而,想要完全控制$SERN$,还需要知道管理员密码.$Itaru$从截获的信息中发现,$SERN$的管理员密码是两个 ...

  5. (十四)C语言之一维数组、二维数组

  6. beta week 2/2 Scrum立会报告+燃尽图 05

    此作业要求参见https://edu.cnblogs.com/campus/nenu/2019fall/homework/9957 一.小组情况 组长:贺敬文组员:彭思雨 王志文 位军营 徐丽君队名: ...

  7. Vue+elementUI+springboot+mybatis demo教程(二)

    安装配置node.js安装vue并搭建前台项目前台项目引入elementUI前台项目引入axios本篇主要记录前台项目搭建之前的环境准备,首先要安装node.js(node官网),进行相关配置等. 安 ...

  8. zipkin-client:brave核心代码思路整理

    Zipkin是分布式跟踪系统. 简单地理解,可以将Zipkin分为两部分. 一部分为Zipkin Server,其负责接受存储应用程序处理耗时数据,以及UI展示. 另一部分为Zipkin Client ...

  9. LC 163. Missing Ranges 【lock, hard】

    Given a sorted integer array nums, where the range of elements are in the inclusive range [lower, up ...

  10. ubuntu快速联网

    1:打开ubuntu 2:设置 特殊:red hat设置视频:http://www.jikexueyuan.com/course/1349_3.html?ss=1