华为OD-分积木/分苹果

题目描述

哥哥弟弟分一堆积木,每块积木重量不同。弟弟要求平分两组,每组数量可以不同但总重量必须相等。

然而弟弟只会二进制并且加法不进位。例如三块积木 3,5,6 分成两组 [3] 和 [5,6]

弟弟认为 5(二进制1001)加上6(二进制1010)是0011:

1001

1010


0011

然后 3 的二进制也是 0011,所以弟弟认为两组积木等重,接受这种分配方案。哥哥实际能分到 5+6=11 块积木。

要求输出哥哥能拿的最大实际重量。如果给定的积木没法按弟弟视角分成重量相等的两组,就输出'NO'。

示例一

输入

复制代码
5,6,3

输出

复制代码
11

代码实现

python 复制代码
# coding:utf-8
# 分积木/分苹果
# https://zhuanlan.zhihu.com/p/521401344?utm_id=0
# https://www.nowcoder.com/discuss/353159159166214144


class Solution:
    def allocateBlock(self, s):
        aweight = 0
        s = list(map(int, s))
        for i in range(len(s)):
            aweight = aweight ^ s[i]
        if aweight == 0:
            s.sort(reverse=True)
            s.pop()
            return sum(s)
        return -1


if __name__ == '__main__':
    s = list(input('input:').split(' '))
    solution = Solution()
    print(solution.allocateBlock(s))
相关推荐
焦糖玛奇朵婷13 小时前
就医陪诊小程序|从软件开发视角看实用度✨
java·大数据·jvm·算法·小程序
和小胖112213 小时前
Anaconda虚拟环境创建步骤
python·conda·numpy
一晌小贪欢13 小时前
Python 魔术方法实战:深度解析 Queue 模块的模块化设计与实现
开发语言·分布式·爬虫·python·python爬虫·爬虫分布式
白云千载尽13 小时前
交换空间扩容与删除、hugginface更换默认目录、ffmpeg视频处理、清理空间
python·ffmpeg·控制·mpc·navsim
你撅嘴真丑13 小时前
求10000 以内的阶乘 与 字符串最大跨距
数据结构·c++·算法
Figo_Cheung13 小时前
Figo几何基础论:基于集合几何化的统一理论框架与哲学意涵——首次提出“几何化诱导的全息原理”
算法·机器学习·概率论·迭代加深
胡西风_foxww13 小时前
学习python人工智能路径及资源
人工智能·python·学习·路径·资源·书籍·路线
老歌老听老掉牙13 小时前
Python+PyQt5 实现目录文件扫描与导出工具
python·qt·文件扫描
小y要自律13 小时前
11 string容器 - 子串获取
c++·算法·stl
t1987512813 小时前
三相计量芯片RN8302B驱动校正程序设计与实现
算法