def ProcCandyDis(inputnum, inputList): oriStr = [] inputStr = inputList[0] if(len(inputStr) < inputnum): return False, 0 for index in range(inputnum): oriStr.append(int(inputStr[index])) bitCntList = [] # 10 ^ 6为最大值 for index in range(22): bitCntList.append(0) for index in range(inputnum): inputStr[index] = bin(int(inputStr[index])) charlist = list(inputStr[index]) charlist.reverse() charlist.pop() charlist.pop() #print(charlist) inputStr[index] = charlist for index in range(inputnum): bitlist = inputStr[index] for j in range(len(bitlist)): if bitlist[j] == '1': bitCntList[j] += 1 rtVal = True for bitCnt in bitCntList: if bitCnt % 2 != 0: rtVal = False break rtRst = 0 # 如果是2的倍数,能分 if rtVal == True: oriStr.sort() oriStr.remove(oriStr[0]) for index in range(inputnum - 1): rtRst += int(oriStr[index]) return rtVal, rtRst
if __name__ == "__main__": inputnum, inputList = GetNumAndInputList(1) rtVal, rtRst = ProcCandyDis(int(inputnum), inputList) if rtVal == True: print(rtRst) else: print("NO")