OD考试分享(求大佬解答)

OD考试分享(求大佬解答)
1.A, B 两人分西瓜,西瓜重量不同,A分西瓜的要求是B按照二进制加法的结果在可选范围内,计算但是不进位,如(5+6  = 101+110 = 011 = 3),B分西瓜就是十进制加法,问怎么在满足A的情况下,B分最多的西瓜,如果没有符合的情况返回-1
例:
输入: 3 5 6    
输出: 11
#华为OD#
全部评论
public class Main {     public static void main(String[] args) {         // 先明确一点:异或运算没有进位操作         Scanner scanner = new Scanner(System.in);         String[] sp = scanner.nextLine().split(" ");         int[] nums = new int[sp.length];         for (int i = 0; i < nums.length; i++) {             nums[i] = Integer.parseInt(sp[i]);         }         int sumA = 0;// A的计算方式是二进制,即异或         int totalSumB = 0;// B的计算方式是十进制         int minA = Integer.MAX_VALUE;         for (int num : nums) {             //如果所有数异或之后等于0,             //则说明任意一个数必然使得总体结果异或之后为0             sumA ^= num;             minA = Math.min(minA, num);//分配一个最小的一个给A即可             totalSumB += num;         }         int maxB = sumA == 0 ? totalSumB - minA : -1;         System.out.println(maxB);     } }
3 回复 分享
发布于 2022-06-21 10:36

相关推荐

点赞 评论 收藏
分享
1 8 评论
分享
牛客网
牛客企业服务