题目大意:给你$m,a,c,X_0,n,g$,求$X_{n+1}=(a\cdot X_n+c) \bmod{m}$,最后输出对$g$取模

题解:矩阵快速幂+龟速乘,这里用了$long\;double$强转

卡点:

C++ Code:

  1. #include <cstdio>
  2. #include <cmath>
  3. using namespace std;
  4. long long m, a, c, x0, n, g;
  5. long long mul(long long a, long long b) {
  6. long long d = (long long) floor(a * (long double) b / m + 0.5);
  7. long long res = a * b - d * m;
  8. if (res < 0) res += m;
  9. return res;
  10. }
  11. //long long mul(long long a, long long b) {
  12. // long long res = 0;
  13. // while (b) {
  14. // if (b & 1) res = (res + a) % m;
  15. // b >>= 1;
  16. // a = (a + a) % m;
  17. // }
  18. // return res;
  19. //}
  20. struct matrix {
  21. long long s[4];
  22. matrix (long long a, long long b, long long c, long long d) {
  23. s[0] = a; s[1] = b; s[2] = c; s[3] = d;
  24. }
  25. matrix operator * (matrix rhs) {
  26. matrix res(0, 0, 0, 0);
  27. res.s[0] = (mul(s[0], rhs.s[0]) + mul(s[1], rhs.s[2])) % m;
  28. res.s[1] = (mul(s[0], rhs.s[1]) + mul(s[1], rhs.s[3])) % m;
  29. res.s[2] = (mul(s[2], rhs.s[0]) + mul(s[3], rhs.s[2])) % m;
  30. res.s[3] = (mul(s[2], rhs.s[1]) + mul(s[3], rhs.s[3])) % m;
  31. return res;
  32. }
  33. };
  34. int main() {
  35. scanf("%lld%lld%lld%lld%lld%lld", &m, &a, &c, &x0, &n, &g);
  36. matrix base(a, 0, 1, 1), ans(x0, c, 0, 0);
  37. while (n) {
  38. if (n & 1) ans = ans * base;
  39. base = base * base;
  40. n >>= 1;
  41. }
  42. printf("%lld\n", ans.s[0] % g);
  43. return 0;
  44. }

  

[洛谷P2044][NOI2012]随机数生成器的更多相关文章

  1. 洛谷 P2044 [NOI2012]随机数生成器

    题意简述 读入X[0], m, a, c, n和g $ X[n+1]=(a*X[n]+c)\mod m $ 求X数列的第n项对g取余的值. 题解思路 矩阵加速 设\[ F=\begin{bmatrix ...

  2. P2044 [NOI2012]随机数生成器

    洛咕原题 正常的矩乘题. 但是,计算过程中会爆long long. 所以,我们要用快速(龟速)乘来解决. 快速乘,也就是把快速幂稍作修改.乘法被分成若干个加法,以时间为代价解决精度问题. #inclu ...

  3. 【洛谷P3600】 随机数生成器

    https://www.luogu.org/problem/show?pid=3600#sub (题目链接) 题意 一个$n$个数的序列,里面每个数值域为$[1,X]$.给$q$个区间,每个区间的权值 ...

  4. 洛谷P3306 [SDOI2013]随机数生成器(BSGS)

    传送门 感觉我BSGS都白学了……数学渣渣好像没有一道数学题能自己想出来…… 要求$X_{i+1}=aX_i+b\ (mod \ \ p)$ 左右同时加上$\frac{b}{a-1}$,把它变成等比数 ...

  5. 矩阵(快速幂):COGS 963. [NOI2012] 随机数生成器

    963. [NOI2012] 随机数生成器 ★★   输入文件:randoma.in   输出文件:randoma.out   简单对比 时间限制:1 s   内存限制:128 MB [问题描述] 栋 ...

  6. BZOJ 2875: [Noi2012]随机数生成器( 矩阵快速幂 )

    矩阵快速幂...+快速乘就OK了 ----------------------------------------------------------------------------------- ...

  7. 洛咕 P3306 [SDOI2013]随机数生成器

    洛咕 P3306 [SDOI2013]随机数生成器 大力推式子??? \(X_{i}=\underbrace{a(a(\cdots(a(a}_{i-1个a}X_1+b)))\cdots)\) \(=b ...

  8. Bzoj 2875: [Noi2012]随机数生成器(矩阵乘法)

    2875: [Noi2012]随机数生成器 Time Limit: 10 Sec Memory Limit: 512 MB Submit: 2052 Solved: 1118 Description ...

  9. [NOI2012]随机数生成器【矩阵快速幂】

    NOI2012 随机数生成器 题目描述 栋栋最近迷上了随机算法,而随机数是生成随机算法的基础.栋栋准备使用线性同余法(Linear Congruential Method)来生成一个随机数列,这种方法 ...

随机推荐

  1. HTML5—— 你肯定会用到的新知识

    HTML5 简介 语义化标签 新增结构标签 表单 多媒体 HTML5 简介 XML是更加严格的语言 是HTML和XHTML的结合 语义化标签 新增的语义化标签 header nav section a ...

  2. Plugin was not installed: Cannot download 'https://plugins.jetbrains.com/pluginManager''

    在Android studio中安装插件的时候,提示了类似这种的错误,解决这个问题有以下几步 1.打开Configure->Settings 2.System Settings->Upda ...

  3. mongodb的windows系统下安装

    先下载安装包,地址有下面两个,按需选择吧. https://www.mongodb.com/download-center/v2/community https://www.mongodb.org/d ...

  4. WinForm webbrowser控件的使用

    webbrowser是一个比较实用的工具,主要用于在winform窗体中嵌入浏览器,达到winform与webform互操作的目的. 先上一个demo,看一下能实现什么效果. private void ...

  5. 1. tty终端接收数据原理

    1. 串口接收数据原理(以“ls”命令为例) (1) 每个终端设备都有一个接收缓冲区,保存原始数据.shell程序一直在休眠,等待合适的字符: (2) 串口接收到'l'字符,把它保存下来: (3) 串 ...

  6. SVM中的间隔最大化

    参考链接: 1.https://blog.csdn.net/TaiJi1985/article/details/75087742 2.李航<统计学习方法>7.1节 线性可分支持向量机与硬间 ...

  7. Less Is More【少即是多】

    Less Is More Adults understand what it feels like to be flooed with objects. 成年人知道被物品淹没的感觉. Why do w ...

  8. PAT-B java实现

    注意:java提交PAT时,不需要加package : 类名必须是Main. 1001 害死人不偿命的(3n+1)猜想 (15) 输入格式:每个测试输入包含1个测试用例,即给出自然数n的值. 输出格式 ...

  9. poj_2339

    参考:https://blog.csdn.net/yzl_rex/article/details/7600906 https://blog.csdn.net/acm_JL/article/detail ...

  10. .Net 面试题 汇总(三)

    101.ASP.net的身份验证方式有哪些?分别是什么原理? 答:Windwos(默认)用IIS... From(窗体)用帐户 Passport(密钥) 102.在.net中,配件的意思是? 答:程序 ...