用C++写出 判断一堆数字中,是否有某两个数的和是3的倍数 输入描述 一个正整数n,表示数字的个数。(n<=100000) 然后是n个整数。 输出描述 如果这n个整数中,存在某两个数字的和恰好是3的倍数,那么输出Yes,否则输出No。不要换行。
时间: 2024-10-10 21:06:13 浏览: 36
你可以使用C++编写一个程序,通过哈希表或数组来判断这组数字中是否存在两个数之和为3的倍数。这里是一个简单的示例:
```cpp
#include <iostream>
#include <unordered_set>
bool checkSumOfThree(int n, const std::vector<int>& nums) {
std::unordered_set<int> remainderSet;
for (int num : nums) {
int complement = 3 - num % 3; // 取余3的补数
if (remainderSet.find(complement) != remainderSet.end()) {
return true; // 找到一个数使其与complement相加等于3的倍数
}
remainderSet.insert(num); // 将当前数添加到set中
}
return false; // 没有找到满足条件的组合,返回false
}
int main() {
int n;
std::cin >> n;
std::vector<int> nums(n);
for (int& num : nums) {
std::cin >> num;
}
if (checkSumOfThree(n, nums)) {
std::cout << "Yes";
} else {
std::cout << "No";
}
return 0;
}
```
这个程序首先创建一个空的哈希集合,然后遍历每个数字,计算它的补数并检查补数是否已经在集合中,如果有,则找到了一对和为3的倍数的数字。如果没有,就将当前数字加入集合继续查找。
阅读全文