P8305 [CoE R4 E] 伪随机

题目描述

很久很久以前,小明生成了一些数据。 他的数据生成器使用了以下两个函数生成随机数: ```plain 定义函数 srand(32 位无符号整数 seed) 将 x 赋值为 seed 定义函数 rand() 将 x 赋值为 x 异或 (x 左移 13 位) 将 x 赋值为 x 异或 (x 右移 17 位) 将 x 赋值为 x 异或 (x 左移 5 位) 返回 x ``` 小明在调用 $\text{srand(seed)}$ 后,连续调用了 $n$ 次 $\text{rand()}$,并且记录下了每次 $\text{rand()}$ 的返回值对 $p$ 取模时得到的余数 $a_i$。 很久很久以后,只有数据生成器依然残存(实现见下发文件的 `generator.cpp`),但生成器的参数 $\text{seed}$ 和 $p$ 已经消失。 小明想要从数据中恢复这两个参数。即给定序列 $a_i$,需要找到任意一组 $\text{seed}$ 和 $p$ 的可能的值。你能帮帮他吗? --- **简要描述** 小明的数据生成器是下发文件的 `generator.cpp`。你需要根据生成器的输出,反推出生成器的输入。

输入格式

输出格式

说明/提示

### 数据规模 本题共有 $50$ 个测试点,每个测试点 $2$ 分。 对于所有数据,保证 $n = 10^5$,$\text{seed}$ 是随机选取的,且至少存在一组解。