题解:#98.选数 审核通过

tctm169 我以逍遥醉人间 2025-01-14 18:01:42 4

1.首先,使用 mask 表示 2^n 种可能的组合。

2.对于 mask 的每一个值,使用位运算 (i >> j) & 1 来检查第 j 个元素是否被选中。

3.计算选中元素的数量 bitCount 和它们的和 sum。

4.检查 bitCount 是否等于 k 并且 sum 是否为素数,如果是,将 count 加 1。

5.最后输出满足条件的组合数 核心代码1:

for (int i = 0; i < mask; i++) {
        int bitCount = 0;  // 记录当前组合的元素数量
        int sum = 0;  // 计算当前组合的元素和
        for (int j = 0; j < n; j++) {
            if ((i >> j) & 1) {
                bitCount++;
                sum += nums[j];
            }
        }

核心代码2:

bool isPrime(int num) {
    if (num <= 1) return false;
    if (num == 2) return true;
    if (num % 2 == 0) return false;
    int sqrtNum = sqrt(num);
    for (int i = 3; i <= sqrtNum; i += 2) {
        if (num % i == 0) return false;
    }
    return true;
}
{{ vote && vote.total.up }}