A、B两个人把苹果分为两堆,A希望按照他的计算规则等分苹果,他的计算规则是按照二进制加法计算,并且不计算进位 12+5=9(1100+0101=9),B的计算规则是十进制加法,包括正常进位,B希望在满足A的情况下获取苹果重量最多。
输入苹果的数量和每个苹果重量,输出满足A的情况下B获取的苹果总重量。
按照二进制加法计算,并且不计算进位 12+5=9(1100+0101=1001=9)也就对于当前这一位二进制,新的运算方法1+1=0,0+0=0,1+1=0.进行到这里自然的能想到这就是异或运算,相同为0,否则为1.回到题目也就是当整个数组的异或和为0,那么能平分(两个相同的数异或等于0)B能获取到sum-苹果最轻的哪一个的重量,否则输出-1即可
#include <bits/stdc++.h>
using namespace std;
#define int long long
#define N 100005