【编程题目 |200分】分糖果II【2021 H1,H2, 2022 Q1 考试题】


时间限制:C/C++ 1秒,其他语言 2秒

空间限制:C/C++262144K,其他语言524288K

64bit IO Format:%lld


本题可使用本地IDE编码,不能使用本地已有代码,无跳出限制,

编码后请点击”保存并调试“按钮进行代码提交。


题目描述

【分糖果II】

Solo和koko是两兄弟,妈妈给了他们一大袋糖,每块糖上都有自己的重量。

现在他们想要将这些糖分成两堆。

分糖的任务当然落到了大哥Solo的身上,然而koko要求必须两个人获得的糖的总重量“相等”(根据Koko的逻辑),要不然就会哭的。

非常不幸的是,koko还非常小,并且他只会先将两个数转成二进制再进行加法,而且总会忘记进位。

如当12(1100)加5(101)时:

1100

+ 0101

————

1001

于是koko得到的计算结果是9(1001)。

此外还有一些例子:

5 + 4 = 1

7 + 9 = 14

50 + 10 = 56

现在Solo非常贪婪,他想要尽可能使自己得到的糖的总重量最大,且不让koko哭。

输入

输入的第一行是一个整数N(2 ≤ N ≤ 15),表示有袋中多少块糖。

第二行包含N个用空格分开的整数Weighti (1 ≤ Weighti ≤ 10^6),表示第i块糖的重量。

输出

如果能让koko不哭,输出Solo所能获得的糖的总重量,否则输出“NO”。

示例 1   输入输出示例仅供调试,后台判题数据一般不包含示例

输入

3

3 5 6

输出

11


代码实现


隐藏内容

此处内容需要权限查看

  • 普通用户特权:11金币
  • 会员用户特权:免费
  • 永久会员用户特权:免费推荐
会员免费查看

Python


n = int(input())
a = [int(x) for x in input().split()]

剩余50%内容,订阅会员后查看


隐藏内容

此处内容需要权限查看

  • 普通用户特权:11金币
  • 会员用户特权:免费
  • 永久会员用户特权:免费推荐
会员免费查看


JavaScript


let n = Number(readLine()); 
let arr = readLine().split(" ").map(Number);

剩余50%内容,订阅会员后查看


隐藏内容

此处内容需要权限查看

  • 普通用户特权:11金币
  • 会员用户特权:免费
  • 永久会员用户特权:免费推荐
会员免费查看