题目名称 | 963. [NOI 2012]随机数生成器 |
---|---|
输入输出 | randoma.in/out |
难度等级 | ★★★ |
时间限制 | 1000 ms (1 s) |
内存限制 | 128 MiB |
测试数据 | 20 |
题目来源 | Makazeu 于2012-07-30加入 |
开放分组 | 全部用户 |
提交状态 | |
分类标签 | |
分享题解 |
通过:302, 提交:693, 通过率:43.58% | ||||
YGOI_真神名曰驴蛋蛋 | 100 | 0.000 s | 0.00 MiB | C++ |
_Itachi | 100 | 0.000 s | 0.00 MiB | C++ |
Hzoi_chairman | 100 | 0.000 s | 0.00 MiB | C++ |
Hzoi_chairman | 100 | 0.000 s | 0.00 MiB | C++ |
金身人面兽 | 100 | 0.000 s | 0.00 MiB | C++ |
Hzoi_Yniverse | 100 | 0.000 s | 0.00 MiB | C++ |
可以的. | 100 | 0.000 s | 0.00 MiB | C++ |
用ۣۣۣۣۣۣۣۣۣۣۣۣۣۣۣ | 100 | 0.000 s | 0.00 MiB | C++ |
Respawn | 100 | 0.000 s | 0.00 MiB | C++ |
destiny | 100 | 0.000 s | 0.00 MiB | C++ |
关于 随机数生成器 的近10条评论(全部评论) | ||||
---|---|---|---|---|
| ||||
忘了让a,c先对m取%。。。。。终于有一道会写的水题了。
再见
2017-05-05 20:13
12楼
| ||||
NOI居然会考快速乘
| ||||
手写乘法……
| ||||
为什么在cogs上re了。。。
sunshine123
2015-03-14 08:09
9楼
| ||||
最后一步忘记先Mod m再Mod g了。。
WA一万年。。 | ||||
即使你强行带两个log也改变不了你是水题的事实= =
| ||||
回复 @HZOI_lhy111 :
不玩了。。。。
OI永别
2014-05-08 19:51
6楼
| ||||
回复 @丿Nice丶蒙奇 :
站在第一了...
HZOI_lhy111
2014-05-06 10:55
5楼
| ||||
,B呀,连乘法都要手打!!!!!!!!!!!!!!!
|
【问题描述】
栋栋最近迷上了随机算法,而随机数是生成随机算法的基础。栋栋准备使用线性同余法(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是多少就可以了。
【输入格式】
输入文件randoma.in中包含6个用空格分割的整数m,a,c,X[0],n和g,其中a,c,X[0]是非负整数,m,n,g是正整数。
【输出格式】
输出到文件randoma.out中,输出一个数,即X[n] mod g
【样例输入】
11 8 7 1 5 3
【样例输出】
2
【样例说明】
计算得X[n]=X[5]=8,故(X[n] mod g) = (8 mod 3) = 2
【数据规模】
40%的数据中m为质数
30%的数据中m与a-1互质
50%的数据中n<=10^6
100%的数据中n<=10^18
40%的数据m,a,c,X[0]<=10^4
85%的数据m,a,c,X[0]<=10^9
100%的数据中m,a,c,X[0]<=10^18
100%的数据中g<=10^8
对于所有数据,n>=1,m>=1,a>=0,c>=0,X[0]>=0,g>=1。