luogu#P8305. [CoE R4 E] 伪随机

    ID: 12300 远端评测题 1000ms 256MiB 尝试: 0 已通过: 0 难度: 6 上传者: 标签>洛谷原创Special JudgeO2优化洛谷月赛

[CoE R4 E] 伪随机

题目描述

很久很久以前,小明生成了一些数据。

他的数据生成器使用了以下两个函数生成随机数:

定义函数 srand(32 位无符号整数 seed)
	将 x 赋值为 seed

定义函数 rand()
	将 x 赋值为 x 异或 (x 左移 13 位)
	将 x 赋值为 x 异或 (x 右移 17 位)
	将 x 赋值为 x 异或 (x 左移 5 位)
	返回 x

小明在调用 srand(seed)\text{srand(seed)} 后,连续调用了 nnrand()\text{rand()},并且记录下了每次 rand()\text{rand()} 的返回值对 pp 取模时得到的余数 aia_i

很久很久以后,只有数据生成器依然残存(实现见下发文件的 generator.cpp),但生成器的参数 seed\text{seed}pp 已经消失。

小明想要从数据中恢复这两个参数。即给定序列 aia_i,需要找到任意一组 seed\text{seed}pp 的可能的值。你能帮帮他吗?


简要描述

小明的数据生成器是下发文件的 generator.cpp。你需要根据生成器的输出,反推出生成器的输入。

输入格式

输入的第一行包含一个整数 nn

第二行包含 nn3232 位无符号整数 a1,a2,,ana_1, a_2, \cdots, a_n,为小明生成的数据。

输出格式

输出仅包含两个 3232 位无符号整数 seed\text{seed}pp,为你的答案。你需要保证 0<seed,p<2320 < \text{seed}, p < 2^{32}

如果有多组解,你可以输出任意一组。

见下发文件的 sample.in
见下发文件的 sample.out

提示

数据规模

本题共有 5050 个测试点,每个测试点 22 分。

对于所有数据,保证 n=105n = 10^5seed\text{seed} 是随机选取的,且至少存在一组解。