[bzoj2875][Noi2012]随机数生成器

来自FallDream的博客,未经允许,请勿转载,谢谢。


栋栋最近迷上了随机算法,而随机数是生成随机算法的基础。栋栋准备使用线性同余法(Linear Congruential Method)来生成一个随机数列,这种方法需要设置四个非负整数参数m,a,c,X[0],按照下面的公式生成出一系列随机

数X[n]X[n+1]=(aX[n]+c)mod m其中mod m表示前面的数除以m的余数。从这个式子可以看出,这个序列的下一个数总是由上一个数生成的。用这种方法生成的序列具有随机序列的性质,因此这种方法被广泛地使用,包括常用的C++和Pascal的产生随机数的库函数使用的也是这种方法。栋栋知道这样产生的序列具有良好的随机性,不过心急的他仍然想尽快知道X[n]是多少。由于栋栋需要的随机数是0,1,...,g-1之间的,他需要将X[n]除以g取余得到他想
的数,即X[n] mod g,你只需要告诉栋栋他想要的数X[n] mod g是多少就可以了。  n,m,a,c,X[0]<=10^18
很容易构造转移矩阵
[a][c]         [xn]    ->  [xn+1]  
[0][1]    *   [1]     ->     [1]
然后发现数字太大,所以写一个大整数乘法就行了。
#include<iostream>
#include<cstdio>
#include<cstring>
#define ll long long
using namespace std;
inline ll read()
{ll x = 0 , f = 1; char ch = getchar();while(ch < '0' || ch > '9'){ if(ch == '-') f = -1;  ch = getchar();}while(ch >= '0' && ch <= '9'){x = x * 10 + ch - '0';ch = getchar();}return x * f;
}
ll mod,a,c,x,n,g;
ll mul(ll X,ll Y)
{ll sum=0;for(ll Z=Y;X;X>>=1,Z=(Z<<1)%mod) if(X&1)    sum=(sum+Z)%mod;return sum;
}
struct Matrix
{ll s[3][3],r,c;Matrix(int x=0,int y=0){r=x;c=y;memset(s,0,sizeof(s));}Matrix operator*(Matrix b){Matrix d(r,b.c);for(int i=1;i<=r;i++)for(int k=1;k<=c;k++)for(int j=1;j<=b.c;j++)d.s[i][j]=(d.s[i][j]+mul(s[i][k],b.s[k][j]))%mod;return d; } 
}A(2,2),B(2,1);main()
{mod=read();a=read();c=read();x=read();n=read();g=read();A.s[1][1]=a;A.s[1][2]=c;A.s[2][2]=1;B.s[2][1]=1;B.s[1][1]=x;for(;n;n>>=1,A=A*A) if(n&1) B=A*B;printf("%lld\n",B.s[1][1]%g); return 0;
}

 

转载于:https://www.cnblogs.com/FallDream/p/bzoj2875.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/355778.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

戴尔电脑开机黑屏怎么办_笔记本电脑开机黑屏怎么办

笔记本电脑开机黑屏是什么原因,电脑黑屏问题如何修复解决众所周知笔记本电脑的散热性能不是特别好&#xff0c;长时间使用笔记本电脑就可能会出现笔记本发烫的状况&#xff0c;严重的有可能造成笔记本电脑出现问题。人们在使用笔记本电脑时可能会出现电脑开机黑屏等情况&#x…

ftp服务器上传文件提示451,解决IIS7之FTP部分文件上传451错误

单位的需要搭建一个FTP&#xff0c;于是就直接使用服务器上的IIS添加了FTP组件&#xff0c;大家都知道IIS组件中的ftp服务器功能比较简单&#xff0c;但是设置起来不太个性化&#xff01;配置好以后&#xff0c;添加一个组的用户具有上传及读取权限&#xff0c;使用Flashfxp软件…

存根类 测试代码 java_嘲弄和存根–了解Mockito的测试双打

存根类 测试代码 java介绍 我遇到的一件事是使用模拟框架的团队假设他们在模拟。 他们并不知道Mocks只是Gerard Meszaros在xunitpatterns.com上分类的“测试双打”之一。 重要的是要认识到每种类型的双重测试在测试中扮演着不同的角色。 用与学习不同模式或重构相同的方式&a…

只会python怎么挣钱_业余学python有用吗

Python的火热我就不细说了&#xff0c;大家都是编程老司机&#xff0c;对最前沿最火热的编程语言肯定比我还了解。前几天&#xff0c;我看了一篇“如何用Python制造一个抖音小姐姐发掘器&#xff1f;”&#xff0c;阅读量竟然比头条上的还多了一倍。可见Python的火热&#xff0…

python3打包exe运行没反应_python selenium运行,打包exe常见问题解决方法

selenium是一款优秀的自动化测试工具&#xff0c;支持的语言也非常广泛&#xff0c;其中以python语言最为高效简洁&#xff0c;本文以Python3.5.2为例。首先需要安装selenium插件&#xff0c;命令行下pip install selenium 或如果安装的有Python2.x版本的需用pip3 install sele…

ansible copy file

ansible xxxip -m copy -a src/localdir/file dest/sss/xxx/basic_search/bin/转载于:https://www.cnblogs.com/lavin/p/6740312.html

ajax和for循环谁难,关于“for”循环中jquery $ .ajax的问题

我相信有一些事情正在发生。首先&#xff0c;$ temp_id变量被提升到函数的顶部&#xff0c;所以它相当于这样做&#xff1a;$.ajax({……success:function(){var $temp_id;for (var i 0; i < $children.length; i) {$temp_id $children.eq(i).attr("id");其次&a…

物联网项目:将Arduino连接到Ubidots和Android –第1部分

这个物联网项目探索了物联网的一个重要方面&#xff1a;如何使用以太网屏蔽将Arduino连接到物联网云平台 。 这方面很重要&#xff0c;因为可以将数据存储在云中然后进行分析。 一旦数据&#xff08;如传感器值&#xff09;存储在云中&#xff0c;便可以使用智能手机访问数据并…

iphone黑屏转圈_iphone XR被曝新BUG,众多用户中招,无规律黑屏假死

进入今年一月份以来&#xff0c;苹果放宽了对iphone的定价&#xff0c;所以各大电商都对多款iphone XR进行了上千元的降价。这也让iphone XR瞬间取代了华为MATE 20 PRO成为新的“真香机”。而随着iphone XR的用户越来越多&#xff0c;这款手机也再次爆出新的BUG。根据网友的反馈…

怎么邀请人加入组队_糖豆人:终极淘汰赛怎么玩?玩法技巧介绍

这几天玩糖豆人&#xff1a;终极淘汰赛的玩家都在问&#xff0c;这个游戏模式怎么玩&#xff0c;糖豆人终极淘汰赛是一款60人同台竞争的卡通吃鸡游戏。想要获胜还是有一定难度的&#xff0c;战神游戏加速器为大家带来这款游戏的基础操作和具体玩法&#xff0c;超低延迟极速体验…

2017年4月21号课堂笔记

2017年4月21号 星期五 空气质量&#xff1a;良 内容&#xff1a;XML&#xff0c;Dom4j解析XML文件&#xff0c;单例 一、XML 老师代码&#xff1a; <?xml version"1.0" encoding"UTF-8"?><!-- XML的注释xml是什么&#xff1f; 可扩展的标记语言…

服务器物理内存总是九十几,服务器物理内存使用率90以上

服务器物理内存使用率90以上 内容精选换一换开启弹性云服务器的虚拟内存后&#xff0c;会导致硬盘I/O性能下降&#xff0c;因此&#xff0c;平台提供的Windows弹性云服务器默认未配置虚拟内存。如果弹性云服务器内存不足&#xff0c;建议通过“变更规格”操作来扩大内存。如果业…

比较二进制_浮点数比较的精度问题

引言 先举个例子&#xff1a;#include <stdio.h>int main() {float a 0.1;float b 0.2;float c a b;if(c 0.3){printf("c 0.3n");}else{printf("0.1 0.2 ! 0.3n");}return 0; }如果变量a,b换0.75&#xff0c;0.5可以看出运行出c 1.25,说明浮…

open表和closed表_excel工作表合并,多文件数据一键合成

工作中 遇到十几个甚至几十个单独工作excel文件要合并成一个怎么办&#xff0c;难道还按照老办法复制工作表?几个还好说&#xff0c;遇到十几个几十个文件&#xff0c;手速不够快的宝宝心里苦。那么&#xff0c;有没有什么日常偷懒神技&#xff0c;一键合成多个excel文件&…

濡沫江湖一直显示获取服务器地址,濡沫江湖采集点坐标大全

濡沫江湖每个地图都有采集点&#xff0c;那么濡沫江湖采集点具体坐标是多少&#xff1f;下面9k9k小编就为大家整理带来濡沫江湖采集点坐标大全&#xff1a;小渔村(35,4)采集铜矿石、碎铁块小渔村(38&#xff0c;16)采集药草、杂草小渔村(14,35)采集亚麻、杂草小渔村(13,12)采集…

jsf集成spring_Spring和JSF集成:转换器

jsf集成spring使用任何Web框架时&#xff0c;都不可避免地需要将用户输入的数据从String为其他类型。 尽管Spring和JSF在设计和功能上确实有很大的不同&#xff0c;但它们都具有转换器策略来处理此问题。 让我们从春天开始。 Spring 3引入了一个全新的转换框架&#xff0c;该框…

在python中、实例变量在类的内部通过_[宜配屋]听图阁

1、类变量、实例变量概念类变量&#xff1a;类变量就是定义在类中&#xff0c;但是在函数体之外的变量。通常不使用self.变量名赋值的变量。类变量通常不作为类的实例变量的&#xff0c;类变量对于所有实例化的对象中是公用的。实例变量&#xff1a;实例变量是定义在方法中的变…

java第五次作业

《Java技术》第五次作业 &#xff08;一&#xff09;学习总结 1.在上周完成的思维导图基础上&#xff0c;补充本周的学习内容&#xff0c;对Java面向对象编程的知识点做一个全面的总结。 2.汽车租赁公司&#xff0c;出租汽车种类有客车、货车和皮卡三种&#xff0c;每辆汽车除了…

mysqld已删除但仍占用空间的_Windows 10删除备份文件方法

Windows具有许多内置备份功能&#xff0c;包括卷影副本&#xff0c;系统还原点和整个系统备份。尽管它们既不是最可靠也不是功能最丰富的备份解决方案&#xff0c;但它们确实提供了一种备份系统和个人数据的不错的方式。Windows内置备份工具的问题之一是它们几乎过于安静和方便…

服务器维修天长,台达精密空调服务天长市供电局

【IT168 厂商动态】项目背景&#xff1a;天长市供电局率属于安徽省供电局&#xff0c;主要负责其辖区内的电力生产与供应。本项目包括三个机房&#xff1a;南、北数据中心机房以及资料中心;台达风冷型精密空调为上述机房的IT设备运行提供7*24小时恒温恒湿高洁净度的运行环境&am…