矩阵快速幂...+快速乘就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 >>= 1) {
if(b & 1) ans += a;
if(ans >= MOD) ans -= MOD;
a <<= 1;
if(a >= MOD) a -= MOD;
}
return ans;
}
 
struct matrix {
ll x[2][2];
matrix() {
memset(x, 0, sizeof x);
}
inline void unit() {
x[0][0] = x[1][1] = 1;
x[0][1] = x[1][0] = 0;
}
matrix operator * (const matrix &o) {
matrix ans;
for(int i = 0; i < 2; i++)
   for(int j = 0; j < 2; j++)
       for(int k = 0; k < 2; k++)
           (ans.x[i][j] += MUL(x[i][k], o.x[k][j])) %= MOD;
return ans;
}
matrix operator = (const matrix &o) {
memcpy(x, o.x, sizeof x);
return *this;
}
matrix operator ^ (ll k) {
matrix ans, p = *this; ans.unit();
for(; k; k >>= 1) {
if(k & 1) ans = ans * p;
p = p * p;
}
return ans;
}
} Q;
 
int main() {
cin >> MOD >> a >> c >> x >> n >> g;
Q.x[0][0] = a; Q.x[0][1] = 0; Q.x[1][0] = c; Q.x[1][1] = 1;
matrix ans = Q ^ n;
cout << (MUL(x, ans.x[0][0]) + ans.x[1][0]) % MOD % g << "\n";
return 0;
}

--------------------------------------------------------------------------------------

2875: [Noi2012]随机数生成器

Time Limit: 10 Sec  Memory Limit: 512 MB
Submit: 1289  Solved: 731
[Submit][Status][Discuss]

Description

Input

包含6个用空格分割的m,a,c,X0,n和g,其中a,c,X0是非负整数,m,n,g是正整数。

Output

输出一个数,即Xn mod g

Sample Input

11 8 7 1 5 3

Sample Output

2

HINT

Source

BZOJ 2875: [Noi2012]随机数生成器( 矩阵快速幂 )的更多相关文章

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

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

  2. [luogu2044][NOI2012] 随机数生成器 [矩阵快速幂]

    题面: 传送门 思路: 看一眼这个公式: $x\left[n+1\right]=\left(a\ast x\left[n\right]+c\right) mod m$ 递推,数据范围$n\leq 10 ...

  3. [日常摸鱼]bzoj2875[NOI2012]随机数生成器-矩阵快速幂

    好裸的矩阵快速幂-然而我一开始居然构造不出矩阵- 平常两个的情况都是拿相邻两项放在矩阵里拿去递推的-然后我就一直构造不出来-其实把矩阵下面弄成1就好了啊orz #include<cstdio&g ...

  4. bzoj2875随机数生成器——矩阵快速幂

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2875 矩阵快速幂,把x和c分开求,最后加上即可: 为防止爆long long,要用快速乘. ...

  5. bzoj 2875: [Noi2012]随机数生成器

    #include<cstdio> #include<iostream> #include<cstring> #define ll long long using n ...

  6. BZOJ 2326 数学作业(分段矩阵快速幂)

    实际上,对于位数相同的连续段,可以用矩阵快速幂求出最后的ans,那么题目中一共只有18个连续段. 分段矩阵快速幂即可. #include<cstdio> #include<iostr ...

  7. BZOJ 1009 [HNOI2008]GT考试(矩阵快速幂优化DP+KMP)

    题意: 求长度为n的不含长为m的指定子串的字符串的个数 1s, n<=1e9, m<=50 思路: 长见识了.. 设那个指定子串为s f[i][j]表示长度为i的字符串(其中后j个字符与s ...

  8. 【BZOJ】2875: [Noi2012]随机数生成器(矩阵乘法+快速乘)

    http://www.lydsy.com/JudgeOnline/problem.php?id=2875 矩阵的话很容易看出来.....我就不写了.太水了. 然后乘法longlong会溢出...那么我 ...

  9. 2875: [Noi2012]随机数生成器 - BZOJ

    DescriptionInput 包含6个用空格分割的m,a,c,X0,n和g,其中a,c,X0是非负整数,m,n,g是正整数. Output 输出一个数,即Xn mod gSample Input ...

随机推荐

  1. 双网卡绑定(suse)

    网卡绑定技术有助于保证高可用性特性并提供其它优势以提高网络性能,Linux双网卡绑定实现就是使用两块网卡虚拟成为一块网卡,这个聚合起来的设备看起来是一个单独的以太网接口设备,就是两块网卡具有相同的IP ...

  2. [dfs+水] hdu 4462 Scaring the Birds

    题意: N*N的矩阵中有M个点能够放稻草人.且给覆盖距离R 每一个稻草人能覆曼哈顿距离R以内的点 问最少须要多少个稻草人 思路: 由于范围非常小,直接能够暴力 注意稻草人所在的位置是不须要被覆盖的 代 ...

  3. C++ 函数映射使用讲解

    想想我们在遇到多语句分支时是不是首先想到的是 switc case 和 if else if ... 这2种方式在编码方面确实简单少,但是当分支达到一定数量后,特别是分支内部有嵌套大段代码或者再嵌套分 ...

  4. U3D navmesh寻路简单示范

    要求:放置一个BOSS,创建几个路标,自动循环这几个路标形成回路,变成自动巡逻,并配合animator系统的控制开关控制BOSS的动作 1.先设置好BOSS 中animator的控制开关,只看Run和 ...

  5. UI界面

    http://www.uimaker.com/uimakerhtml/uidesign/uisoft/2016/0323/122862.html http://www.uimaker.com/uima ...

  6. 修改SQL Server 排序规则 (未能排它地锁定数据库以执行该操作)

    use master go alter database DBName set single_user go alter database DBName COLLATE Chinese_PRC_CI_ ...

  7. GSAP学习笔记

    GSAP(Green Sock Animation Platform)是一个十分好用的js动画库,据说是as的精简版 以下是学习GSAP的一些笔记:貌似中文的文档不是很多 GSAP notes: tl ...

  8. Outlook Anywhere 每次要输入密码

    客户端加入域Exchange OutlookAnywhere使用NTLM验证 2007 2010:

  9. hibernate的配置 1

    hibernate 是一种ORM框架,是ORM框架中一个典范 ORM叫做对象关系映射 是面向对象语言和关系型数据库之间的映射关系 所以只有在面向对象语言或者关系型数据库没用的时候ORM才会消失 ORM ...

  10. Windows Phone 8初学者开发—第7部分:本地化应用程序

    原文 Windows Phone 8初学者开发—第7部分:本地化应用程序 第7部分:本地化应用程序 原文地址: http://channel9.msdn.com/Series/Windows-Phon ...