华为OD机考题目分享(0517)

第一题:分苹果

题目描述:
A,B两个人把苹果分为两堆,A希望按照它的计算规则等分苹果,他的计算规则是按照二进制加法计算,并且不计算走位,12+5=9(1100+0101=9),
B的计算规则是十进制加法,包括正常进位,B希望在满足A的情况下获取苹果重量最多,输入苹果的数量和每个苹果重量,输出满足A的情况下获取的苹果总重量,
如果无法满足A的要求,输出-1。

输入描述:
输入第一行是苹果数量:3
输入第二行是每个苹果重量:3 5 6

输出描述:
输出第一行是B获取的苹果总重量:11

示例1:
输入:
3
3  5  6
输出:
11

示例2:
输入:
8
7258  6579   2602  6716  3050   3564  5396  1773
输出:
35165 
n=int(input('请输入苹果的数量:'))
nums=list(map(int,input('请输入每个苹果的重量:').split()))

total=sum(nums)
nums=sorted(nums)
xor=0

for i in nums:
    xor^=i
if xor==0:
    print(total-nums[0])
else:
    print(-1)






#华为OD##笔经#
全部评论
这题目完全没看懂,规则都不讲清楚
5 回复 分享
发布于 2022-07-21 18:29
没看懂,为啥A得0就拿走最小的
1 回复 分享
发布于 2022-08-21 14:28 天津
应该还有两道题吧,我记得同事说他们机试3道题
点赞 回复 分享
发布于 2022-05-20 16:56
😀
点赞 回复 分享
发布于 2022-05-20 19:04
学到了 ^=,感谢
点赞 回复 分享
发布于 2022-05-22 21:50
他的计算规则是按照二进制加法计算,并且不计算走位; 这个怎么理解?
点赞 回复 分享
发布于 2022-06-06 16:52
Java 版本: public class T2Main {     public static void main(String[] args) {         Scanner in = new Scanner(System.in);         while (in.hasNext()) {             // 封装值             Integer num = in.nextInt();             in.nextLine();             Integer[] ws = new Integer[num];             for (int i = 0; i < num; i++) {                 ws[i] = in.nextInt();             }             Arrays.sort(ws);             Integer total = 0;             Integer t = 0;             for (Integer w : ws) {                 t ^= w;                 total += w;             }             if (t == 0) {                 System.out.println(total - ws[0]);             } else {                 System.out.println(-1);             }         }     } }
点赞 回复 分享
发布于 2022-06-06 17:51
😁
点赞 回复 分享
发布于 2023-08-07 22:56 广东

相关推荐

11-18 15:57
门头沟学院 Java
最终归宿是测开:这个重邮的大佬在重邮很有名的,他就喜欢打92的脸,越有人质疑他,他越觉得爽😂
点赞 评论 收藏
分享
评论
6
42
分享
牛客网
牛客企业服务