结论
小美有一个长度为 n 的数组 {a1,a2,...,an} ,他希望构造一个非负整数 x , 满足 x 的二进制位数不超过数组中最大值的二进制位数(特别的 0 二进制位数为 1 )。
随后,可对数组 a 重复进行以下操作,以使所有元素的总和最大:
在使元素总和达到最大值的前提下,要求所有操作前初始的 x 尽可能小。请输出最大总和及对应的最小 x 。
按位或:or 表示按位或运算,即对两个整数的二进制表示的每一位进行逻辑或操作。
按位与:and 表示按位与运算,即对两个整数的二进制表的每一位进行逻辑与操作。
每个测试文件均包含多组测试数据。
第一行输入一个整数 T(1≦T≦1000) ,代表数据组数;
对于每组测试数据,输入如下:
第一行输入一个整数 n(1≦n≦500) ,表示数组的长度;
第二行输入 n 个整数 a1,a2,...,an(0≦ai<230),表示数组 a 的元素。
对于每组测试数据,新起一行,输出两个整数,用空格分隔:第一个整数为数组可以达到的最大总和;第二个整数为在达到最大总和的前提下初始最小的 x 。
输入
2
2
3 3
3
1 2 3
输出
6 0
9 3