用C++写出来,对于每个正整数 ,如果存在两个正整数 和 满足 ,输出 Yes,否则输出 No。
时间: 2024-10-05 14:02:05 浏览: 20
在C++中,你可以使用标准库函数以及迭代器来解决这个问题。首先,我们可以创建一个函数`checkSumTriplets(int n)`,这个函数接受一个正整数n作为输入,然后遍历从1到sqrt(n)的所有数字,对于每个数字i,检查是否存在其他两个数字j和k使得i + j + k = n。以下是简单的代码实现:
```cpp
#include <iostream>
#include <vector>
#include <cmath>
bool checkIfExist(std::vector<int>& nums, int target) {
for (int i = 0; i < nums.size(); ++i) {
int complement = target - nums[i];
if (complement >= nums[i] && std::binary_search(nums.begin(), nums.end(), complement)) {
return true;
}
}
return false;
}
void printResultForEachNumber(int n) {
std::vector<int> nums;
for (int i = 1; i <= n; ++i) {
nums.push_back(i);
}
for (int num : nums) {
if (checkIfExist(nums, num * 2)) {
std::cout << "Yes\n";
} else {
std::cout << "No\n";
}
}
}
int main() {
int input;
std::cout << "Enter a positive integer: ";
std::cin >> input;
printResultForEachNumber(input);
return 0;
}
```
在这个代码中,`checkIfExist`函数用于检查是否存在满足条件的组合,而`printResultForEachNumber`则负责处理每一个正整数,并打印相应的结果。
阅读全文