#P7121. Ame 和 Gura 的奇妙探险
Ame 和 Gura 的奇妙探险
题目背景
鉴于洛谷的 SPJ 编译可能依赖于用户选择的编译器版本,且 SPJ 使用了 C++11,请 C++ 选手使用 C++11 或以上进行提交。
Lewdson Watson Amelia 和 Gawr Gura 在玩 Mivicraft。
Gura 想将地狱里的交通升级为冰船隧道,但在此之前她先得有一把精准采集的镐子。尝试了一遍又一遍,但终究未能成功的她只好可怜兮兮地找到 Ame。Ame 立刻说道:“So easy! I'll get it in my first try.”
(第一次之后)“Well let's try it again!”
(第二次之后)“Hmmm maybe something's getting wrong today?”
(第三次之后)“I'll give you a ground pound you silly enchanting table!”
(第四次之后)“.. Damn.”
于是 Ame 决定借助一些 技 巧 来拿到精准采集的镐子。她通过查询资料得知 Mivicraft 产生随机数使用了梅森旋转算法(Mersenne Twister,MT19937)。Mivicraft 会通过一个 MT19937 引擎产生一系列的随机数来生成世界的区块。
题目描述
Ame 知道,只要她能够找到初始化 MT19937 引擎时使用的种子,她就能够推断出自己如何才能获得一把精准采集的镐子。于是她游历世界,并通过聪明的侦探头脑算出了这个 MT19937 引擎 刚被初始化后 生成的 个随机数(注:这里的 是 MT19937 引擎中的一个参数)。现在她把这 个随机数给了你,希望你能够推断出初始化 MT19937 引擎时使用的种子()。值得注意的是,Mivicraft 使用的并非标准的 MT19937 引擎,其中的一些参数与论文相比有所改变,Ame 把它们附加到了输入中。请你帮帮 Ame 吧!
好心的 Mivik 为你准备了一份简单易懂的 MT19937 实现,请在附件中查看。
输入格式
第一行 10 个非负整数,分别对应 MT19937 中的 10 个参数:、、、、、、、、 和 。
接下来 行,每行一个非负整数,依次表示 MT19937 引擎刚被初始化后生成的 个随机数。
输出格式
一行一个非负整数,代表 MT19937 引擎初始化时使用的种子。数据保证有解,如果有多个解,你只需要输出任意一个即可。
见 sample/1.in
见 sample/1.out
见 sample/2.in
见 sample/2.out
提示
样例解释 #1
十个参数全部使用标准的 MT19937 参数,种子为 233333
。也就是说,你可以通过下面的程序产生同样的随机数序列:
#include <iostream>
#include <random>
std::mt19937 engine(233333);
int main() {
for (int i = 0; i < 624; ++i)
std::cout << engine() << std::endl;
return 0;
}
测试点约束
本题采用捆绑测试。
对于全部数据,有 ,,,,保证 是奇数。
每个子任务的具体限制见下表:
子任务编号 | 分值 | 特殊限制 |
---|---|---|
1 | 20 | 种子小于等于 |
2 | 30 | , |
3 | 50 | 无 |
注:下发文件使用 UTF-8 编码,请使用可识别该编码的编辑器打开。
附件下载备用链接:百度网盘 提取码:jf9e