矩阵快速幂...+快速乘就OK了 -------------------------------------------------------------------------------------- #include<bits/stdc++.h>   using namespace std;   typedef long long ll;   ll MOD, a, c, x, n, g;   ll MUL(ll a, ll b) { ll ans = 0; for(; b; b >…
题面: 传送门 思路: 看一眼这个公式: $x\left[n+1\right]=\left(a\ast x\left[n\right]+c\right) mod m$ 递推,数据范围$n\leq 10^18$,自然想到矩阵快速幂 构造如下矩阵: 状态矩阵: $\begin{bmatrix}x\lbrack i\rbrack&1\end{bmatrix}$ 转移矩阵: $\begin{bmatrix}a&0\\c&1\end{bmatrix}$ 从x[0]开始做转移矩阵的n次幂,再乘…
好裸的矩阵快速幂-然而我一开始居然构造不出矩阵- 平常两个的情况都是拿相邻两项放在矩阵里拿去递推的-然后我就一直构造不出来-其实把矩阵下面弄成1就好了啊orz #include<cstdio> #include<cstring> #define rep(i,n) for(register lint i=1;i<=n;i++) typedef long long lint; lint m,n,g; struct matrix { lint m[3][3]; matrix(){m…
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2875 矩阵快速幂,把x和c分开求,最后加上即可: 为防止爆long long,要用快速乘. 代码如下: #include<iostream> #include<cstdio> #include<cstring> using namespace std; typedef long long ll; ll n,x,a,c,m,g; ll mul(ll x,ll y)…
2875: [Noi2012]随机数生成器 Time Limit: 10 Sec Memory Limit: 512 MB Submit: 2052 Solved: 1118 Description 栋栋最近迷上了随机算法,而随机数是生成随机算法的基础.栋栋准备使用线性同余法(Linear Congruential Me thod)来生成一个随机数列,这种方法需要设置四个非负整数参数m,a,c,X[0],按照下面的公式生成出一系列随机 数X[n]X[n+1]=(aX[n]+c)mod m其中mo…
Code: #include<cstdio> #include<algorithm> #include<iostream> #include<cstring> #include<string> using namespace std; void setIO(string a){ freopen((a+".in").c_str(),"r",stdin); } #define ll long long ll m…
963. [NOI2012] 随机数生成器 ★★   输入文件:randoma.in   输出文件:randoma.out   简单对比 时间限制:1 s   内存限制:128 MB [问题描述] 栋栋最近迷上了随机算法,而随机数是生成随机算法的基础.栋栋准备使用线性同余法(Linear Congruential Method)来生成一个随机数列,这种方法需要设置四个非负整数参数m,a,c,X[0],按照下面的公式生成出一系列随机数{Xn}:X[n+1]=(aX[n]+c) mod m 其中mo…
NOI2012 随机数生成器 题目描述 栋栋最近迷上了随机算法,而随机数是生成随机算法的基础.栋栋准备使用线性同余法(Linear Congruential Method)来生成一个随机数列,这种方法需要设置四个非负整数参数 \(m,a,c,X_0\),按照下面的公式生成出一系列随机数 \(\{X_n\}\): \[X_{n+1}=(aX_n +c)\bmod m \] 其中\(mod\ m\) 表示前面的数除以 \(m\) 的余数.从这个式子可以看出,这个序列的下一个数总是由上一个数生成的.…
[BZOJ2875]随机数生成器(矩阵快速幂) 题面 Description 栋栋最近迷上了随机算法,而随机数是生成随机算法的基础.栋栋准备使用线性同余法(Linear Congruential Method)来生成一个随机数列,这种方法需要设置四个非负整数参数m,a,c,X[0],按照下面的公式生成出一系列随机数{Xn}: \[X[n+1]=(aX[n]+c) mod m\] 其中mod m表示前面的数除以m的余数.从这个式子可以看出,这个序列的下一个数总是由上一个数生成的. 用这种方法生成的…
题目没给全,吃X了... 2875: [Noi2012]随机数生成器 Time Limit: 10 Sec Memory Limit: 512 MB Submit: 1479 Solved: 829 [Submit][Status][Discuss] Description 栋栋最近迷上了随机算法,而随机数生成是随机算法的基础.栋栋准备使用线性同余法(Linear Congruential Method)来生成一个随机数列,这种方法需要设置四个非负整数参数m, a, c, X0,按照下面的公式生…