3949: Nim 积

内存限制:256 MB 时间限制:1.000 S
评测方式:文本比较 命题人:
提交:0 解决:0

题目描述

这是一道模板题。 对于两个非负整数 $x, y$ 我们定义其 Nim 积 $x\otimes y$: $$ x \otimes y = \operatorname {mex} \{ (a\otimes b) \oplus (a\otimes y) \oplus (x\otimes b) \mid 0\le a < x \wedge 0\le b < y \} $$ 其中 $\oplus$ 是异或运算,$\operatorname{mex}$ 是集合中不存在的最小非负整数。

输入

第一行输入四个整数 $T, \mathrm{SA}, \mathrm{SB}, \mathrm{SC}$。 为了测试效率,询问数量 $T$ 可能很大,使用如下代码生成询问的输入: ```cpp unsigned int SA, SB, SC; unsigned int rng() { SA ^= SA << 16; SA ^= SA >> 5; SA ^= SA << 1; unsigned int t = SA; SA = SB; SB = SC; SC ^= t ^ SA; return SC; } ``` 在接下来 $T$ 组询问中,设 $\mathrm{lastans}$ 最初为 $0$,则按顺序有 ```cpp unsigned int x = rng() + lastans; unsigned int y = rng(); lastans = nim_mul(x, y); ``` 如此进行 $T$ 次循环。

输出

输出一行一个整数,表示最后一组解的答案。

样例输入 复制

5 171380702 78283356 95463589

样例输出 复制

1145338263

提示


数据范围:生成的数据均在 $2^{32}$ 范围以内,故保证 $0\le x, y < 2^{32}$。 四组数据中的 $T$ 分别为 $10, 1000, 3\times 10^4, 3\times 10^7$。

来源/分类