华为OD机试:分苹果问题高效解法

华为OD机试C卷 - 分苹果问题解析

问题描述
题目要求将一堆苹果分成两堆,使得两堆苹果数量的二进制表示中1的个数相同。需要找出满足条件的分法数量。

解题思路

二进制特性分析
分苹果的核心在于二进制中1的个数。两堆苹果数量的二进制1的个数相同,意味着原始苹果总数的二进制1的个数必须是偶数。若总数为奇数(二进制1的个数为奇数),直接返回0。

数学推导
设总苹果数为 total,其二进制1的个数为 count。若 count 为偶数,分法数量为组合数 $C(count, count/2)$ 或 $2^{count-1}$(推导过程略)。实际分法数为满足条件的子集数。

代码实现

Java 实现

public class DivideApples {
    public static int countWays(int total) {
        int count = Integer.bitCount(total);
        if (count % 2 != 0) return 0;
        return (int) Math.pow(2, count - 1);
    }
}

C++ 实现

#include <bits/stdc++.h>
using namespace std;

int countWays(int total) {
    int count = __builtin_popcount(total);
    if (count % 2 != 0) return 0;
    return pow(2, count - 1);
}

JavaScript 实现

function countWays(total) {
    const count = total.toString(2).split('1').length - 1;
    if (count % 2 !== 0) return 0;
    return Math.pow(2, count - 1);
}

Python 实现

def count_ways(total):
    count = bin(total).count('1')
    if count % 2 != 0:
        return 0
    return 2 ** (count - 1)

复杂度分析

  • 时间复杂度:$O(1)$,仅需计算二进制中1的个数和幂运算。
  • 空间复杂度:$O(1)$,无额外空间使用。

边界条件

  • 输入为0时,直接返回0(无法分割)。
  • 输入为1时,返回0(奇数个1)。
  • 输入为3(二进制11)时,返回2(分法为1+2)。

总结

通过二进制1的奇偶性判断可行性,利用组合数学快速计算分法数。代码简洁高效,适合机试场景。

BbS.okacop020.info/PoSt/1120_985740.HtM
BbS.okacop021.info/PoSt/1120_968744.HtM
BbS.okacop022.info/PoSt/1120_349588.HtM
BbS.okacop023.info/PoSt/1120_885136.HtM
BbS.okacop024.info/PoSt/1120_162824.HtM
BbS.okacop025.info/PoSt/1120_777167.HtM
BbS.okacop026.info/PoSt/1120_174631.HtM
BbS.okacop027.info/PoSt/1120_675765.HtM
BbS.okacop028.info/PoSt/1120_906170.HtM
BbS.okacop029.info/PoSt/1120_519657.HtM
BbS.okacop020.info/PoSt/1120_853428.HtM
BbS.okacop021.info/PoSt/1120_571738.HtM
BbS.okacop022.info/PoSt/1120_841838.HtM
BbS.okacop023.info/PoSt/1120_383276.HtM
BbS.okacop024.info/PoSt/1120_236182.HtM
BbS.okacop025.info/PoSt/1120_129219.HtM
BbS.okacop026.info/PoSt/1120_414421.HtM
BbS.okacop027.info/PoSt/1120_146961.HtM
BbS.okacop028.info/PoSt/1120_867415.HtM
BbS.okacop029.info/PoSt/1120_060266.HtM
BbS.okacop020.info/PoSt/1120_394992.HtM
BbS.okacop021.info/PoSt/1120_843702.HtM
BbS.okacop022.info/PoSt/1120_061899.HtM
BbS.okacop023.info/PoSt/1120_828893.HtM
BbS.okacop024.info/PoSt/1120_261563.HtM
BbS.okacop025.info/PoSt/1120_867348.HtM
BbS.okacop026.info/PoSt/1120_457956.HtM
BbS.okacop027.info/PoSt/1120_889338.HtM
BbS.okacop028.info/PoSt/1120_899553.HtM
BbS.okacop029.info/PoSt/1120_114078.HtM
BbS.okacop020.info/PoSt/1120_814164.HtM
BbS.okacop021.info/PoSt/1120_057028.HtM
BbS.okacop022.info/PoSt/1120_393885.HtM
BbS.okacop023.info/PoSt/1120_025650.HtM
BbS.okacop024.info/PoSt/1120_021854.HtM
BbS.okacop025.info/PoSt/1120_998896.HtM
BbS.okacop026.info/PoSt/1120_425688.HtM
BbS.okacop027.info/PoSt/1120_205494.HtM
BbS.okacop028.info/PoSt/1120_422661.HtM
BbS.okacop029.info/PoSt/1120_575283.HtM
BbS.okacop020.info/PoSt/1120_161818.HtM
BbS.okacop021.info/PoSt/1120_659271.HtM
BbS.okacop022.info/PoSt/1120_903735.HtM
BbS.okacop023.info/PoSt/1120_225745.HtM
BbS.okacop024.info/PoSt/1120_856486.HtM
BbS.okacop025.info/PoSt/1120_309389.HtM
BbS.okacop026.info/PoSt/1120_934509.HtM
BbS.okacop027.info/PoSt/1120_770366.HtM
BbS.okacop028.info/PoSt/1120_383073.HtM
BbS.okacop029.info/PoSt/1120_979360.HtM
BbS.okacop020.info/PoSt/1120_470182.HtM
BbS.okacop021.info/PoSt/1120_184857.HtM
BbS.okacop022.info/PoSt/1120_024622.HtM
BbS.okacop023.info/PoSt/1120_033256.HtM
BbS.okacop024.info/PoSt/1120_955805.HtM
BbS.okacop025.info/PoSt/1120_630766.HtM
BbS.okacop026.info/PoSt/1120_948597.HtM
BbS.okacop027.info/PoSt/1120_551250.HtM
BbS.okacop028.info/PoSt/1120_067387.HtM
BbS.okacop029.info/PoSt/1120_341434.HtM
BbS.okacop020.info/PoSt/1120_747365.HtM
BbS.okacop021.info/PoSt/1120_277274.HtM
BbS.okacop022.info/PoSt/1120_818313.HtM
BbS.okacop023.info/PoSt/1120_434062.HtM
BbS.okacop024.info/PoSt/1120_366273.HtM
BbS.okacop025.info/PoSt/1120_610914.HtM
BbS.okacop026.info/PoSt/1120_842433.HtM
BbS.okacop027.info/PoSt/1120_406065.HtM
BbS.okacop028.info/PoSt/1120_477387.HtM
BbS.okacop029.info/PoSt/1120_457245.HtM
BbS.okacop030.info/PoSt/1120_212781.HtM
BbS.okacop031.info/PoSt/1120_302119.HtM
BbS.okacop032.info/PoSt/1120_888353.HtM
BbS.okacop033.info/PoSt/1120_131766.HtM
BbS.okacop034.info/PoSt/1120_635667.HtM
BbS.okacop035.info/PoSt/1120_392984.HtM
BbS.okacop036.info/PoSt/1120_370505.HtM
BbS.okacop037.info/PoSt/1120_639576.HtM
BbS.okacop038.info/PoSt/1120_139681.HtM
BbS.okacop039.info/PoSt/1120_309752.HtM

#牛客AI配图神器#

全部评论

相关推荐

26应届求职ing:你这是报了豆音四哥的班?双非本硕拿这两个项目写简历里投100多家嵌软也没什么面试,感觉项目简单了,很多人用
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务