小美有一个长度为n的数组,她认为一个数字是好数,需要满足该数字的所有数位之和是一个偶数,且至少包含一个奇数,现在请你帮助小美求出数组多少个好数。 请用C++编写这段问题的答案
时间: 2024-10-13 10:16:45 浏览: 193
为了帮小美解决这个问题,我们可以编写一个C++程序,遍历数组,检查每个数字是否符合条件。首先,我们需要对数字进行分解,分别获取其各个数位,并计算它们的和。如果这个和是偶数并且包含至少一个奇数,那么就将这个数字计数。
这是一个简单的C++函数示例,用于实现这个功能:
```cpp
#include <iostream>
#include <vector>
bool isGoodNumber(int num) {
int sum = 0;
while (num > 0) {
int digit = num % 10; // 获取最后一位数字
if (digit % 2 == 1) { // 如果是奇数
sum += digit;
if (sum % 2 != 0) return false; // 数字和已经是奇数,则不符合条件
}
num /= 10; // 移除最后一位并继续处理
}
return sum % 2 == 0; // 返回所有数位和是否为偶数
}
int countGoodNumbers(const std::vector<int>& nums) {
int count = 0;
for (int num : nums) {
if (isGoodNumber(num)) {
count++;
}
}
return count;
}
int main() {
std::vector<int> numbers = {123, 456, 789, 101112}; // 你需要替换为实际的数组
int n = countGoodNumbers(numbers);
std::cout << "数组中有 " << n << " 个好数。\n";
return 0;
}
```
在这个代码中,`isGoodNumber` 函数负责判断一个数是否为好数,而 `countGoodNumbers` 函数则统计给定数组中好数的数量。在`main`函数中,你可以替换数组`numbers`为你想要测试的具体值。
阅读全文