华为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
查看22道真题和解析
