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 引擎 **刚被初始化后** 生成的 $N$ 个随机数(注:这里的 $N$ 是 MT19937 引擎中的一个参数)。现在她把这 $N$ 个随机数给了你,希望你能够推断出初始化 MT19937 引擎时使用的种子($0\le\text{种子}<2^{32}$)。值得注意的是,Mivicraft 使用的并非标准的 MT19937 引擎,其中的一些参数与论文相比有所改变,Ame 把它们附加到了输入中。请你帮帮 Ame 吧!
好心的 Mivik 为你准备了一份简单易懂的 MT19937 实现,请在附件中查看。
输入输出格式
输入格式
第一行 10 个非负整数,分别对应 MT19937 中的 10 个参数:$N$、$M$、$A$、$U$、$S$、$B$、$T$、$C$、$L$ 和 $F$。
接下来 $N$ 行,每行一个非负整数,依次表示 MT19937 引擎刚被初始化后生成的 $N$ 个随机数。
输出格式
一行一个非负整数,代表 MT19937 引擎初始化时使用的种子。数据保证有解,如果有多个解,你只需要输出任意一个即可。
输入输出样例
输入样例 #1
见 sample/1.in
输出样例 #1
见 sample/1.out
输入样例 #2
见 sample/2.in
输出样例 #2
见 sample/2.out
说明
### 样例解释 #1
十个参数全部使用标准的 MT19937 参数,种子为 `233333`。也就是说,你可以通过下面的程序产生同样的随机数序列:
```cpp
#include <iostream>
#include <random>
std::mt19937 engine(233333);
int main() {
for (int i = 0; i < 624; ++i)
std::cout << engine() << std::endl;
return 0;
}
```
### 测试点约束
**本题采用捆绑测试。**
对于全部数据,有 $10\le M<N\le 2\times 10^5$,$0\le A,B,C<2^{32}$,$1\le U,S,T,L\le 31$,$1\le F<2^{32}$,保证 $F$ 是奇数。
每个子任务的具体限制见下表:
| 子任务编号 | 分值 | 特殊限制 |
|:-:|:-:|:-:|
| 1 | 20 | 种子小于等于 $1000$ |
| 2 | 30 | $U=S=T=L=16$,$A=B=C=0$ |
| 3 | 50 | 无 |
**注:下发文件使用 UTF-8 编码,请使用可识别该编码的编辑器打开。**
**附件下载备用链接:[百度网盘](https://pan.baidu.com/s/1ZJQfZK93Qw2lYrDHLQJh2Q) 提取码:jf9e**