首页 > 试题广场 >

小苯的序列合并

[编程题]小苯的序列合并
  • 热度指数:716 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
\hspace{15pt}给定长度为 n 的序列 a,你可以对 a 做如下操作任意次:

\hspace{23pt}\bullet\ 选择一个下标 i\ (1 \leqq i < |a|),将 a_ia_{i+1} 合并起来,结果为 a_i\oplus a_{i+1}。(其中 \oplus 表示按位异或运算符,|a| 表示 a 当前的长度。)

\hspace{15pt}所有操作结束后,小苯希望你最大化最终 a 中所有数字的按位与,即 \rm AND(\&) 值,请你算一下这个最大值是多少吧。

输入描述:
\hspace{15pt}每个测试文件包含多组测试数据。第一行输入一个整数 T\ (1 \leqq T \leqq 10^5) 代表数据组数,每组测试数据描述如下:
\hspace{15pt}第一行一个正整数 n\ (1 \leqq n \leqq 3 \times 10^5),表示序列 a 的长度。
\hspace{15pt}第二行 n 个非负整数 a_i\ (0 \leqq a_i \leqq 10^9),表示序列 a

\hspace{15pt}除此之外,保证同一个测试文件中的 n 的总和不超过 3 \times 10^5


输出描述:
\hspace{15pt}对于每组数据,输出一个整数,表示操作结束后序列 a 中所有元素按位与的最大值。
示例1

输入

2
6
1 4 5 6 2 9
5
1 1 1 1 1

输出

13
1

这道题你会答吗?花几分钟告诉大家答案吧!