互联网收集的od练习题, 记录解题过程. 因为无运行环境.暂时无法验证正确性,仅供参考
题目描述:
A、B两个人把苹果分为两堆,A希望按照他的计算规则等分苹果,他的计算规则是按照二进制加法计算,并且不计算进位 12+5=9(1100 + 0101 = 9),
B的计算规则是十进制加法,包括正常进位,B希望在满足A的情况下获取苹果重量最多。
输入苹果的数量和每个苹果重量,输出满足A的情况下B获取的苹果总重量。
如果无法满足A的要求,输出-1
1 <= 总苹果数量 <= 20000
1 <= 每个苹果重量 <= 10000
输入:
3
3 5 6
输出: 11
def solution():
n = int(input())
nums = list(map(int, input().split()))
_sum = nums[0]
for i in range(1, n):
_sum = _sum ^ nums[i] # 二进制异或操作 0 ^ 0 = 0, 0 ^ 1 = 1, 1 ^ 0 = 1, 1 ^ 1 = 0
if _sum != 0: # 在二进制下能够均分则代表和为0
print(-1)
return
print(sum(nums) - min(nums)) # B获取最多的情况,则A只取最小一个
if __name__ == '__main__':
solution()
6079

被折叠的 条评论
为什么被折叠?



