编程题
### 问题描述 小小蓝是一名天才程序员,他研究了一种特殊的数组操作,他称之为“异或消除”。 对一个整数数组 $arr$ 执行一次“异或消除”操作,可以拆解成以下四个步骤: 1. 找到数组中的最大值 $a$ 和次大值 $b$,若有多个相同的最大值或次大值,取最左边的那个。 2. 将 $a$ 和 $b$ 两个元素同时从数组中移除。 3. 计算 $a$ 和 $b$ 的异或值 $c = a \oplus b$。 4. 将 $c$ 放入数组的最左边。 小小蓝想知道,对于给定的数组 $arr$,经过不断的“异或消除”操作后,数组中最后留下的元素。他请你编写一个程序来帮助他解决这个问题。 ### 输入格式 输入包含两行。 输入的第一行,包含一个整数 $n$ $(1 \leq n \leq 10^5)$,表示数组 $arr$ 的长度。 输入的第二行,包含 $n$ 个整数,表示数组 $arr$ 中的元素。 ### 输出格式 输出仅一行,包含一个整数,表示数组中最后留下的元素。 ### 样例输入 ```text 5 3 5 7 5 3 ``` ### 样例输出 ```text 7 ``` ### 说明 1. 第一次异或消除操作,取出 $7$ 和 $5$,异或得 $2$,数组变为 $[2, 3, 5, 3]$。 2. 第二次异或消除操作,取出 $5$ 和 $3$,异或得 $6$,数组变为 $[6, 2, 3]$。 3. 第三次异或消除操作,取出 $6$ 和 $3$,异或得 $5$,数组变为 $[5, 2]$。 4. 第四次异或消除操作,取出 $5$ 和 $2$,异或得 $7$,数组变为 $[7]$。 ### 评测数据规模 对于 30% 的测试数据,$1 \leq n \leq 10$。 对于 60% 的测试数据,$1 \leq n \leq 1000$。 对于 100% 的测试数据,$1 \leq n \leq 10^5$,数组中的元素取值范围为 $[-10^9, 10^9]$。
查看答案
赣ICP备20007335号-2