速算大赛:找出相加等于集合中其他两个数的数
速算大赛:找出相加等于集合中其他两个数的数
某学校的数学老师采用一种快速考察速算加法能力的测验方法。
他随机生成一个'正整数'集合,集合中的数各不相同,然后要求学生回答:其中有多少个数,恰好等于集合中另外两个(不同的)数之和?
输入格式
共两行,第一行包含一个整数 n,表示测试题中给出的'正整数'个数。
第二行有 n 个'正整数',每两个'正整数'之间用一个空格隔开,表示测试题中给出的'正整数'。
输出格式
一个整数,表示测验题答案。
样例 #1
样例输入 #1
4
1 2 3 4
样例输出 #1
2
提示
【样例说明】
1 2 3 4 任选两个相加的和可以是 3 4 5 6 7。
只有 3 和 4 满足条件,故满足测试要求的答案为 2。
注意,加数和被加数必须是集合中的两个不同的数。
【数据说明】
对于 20% 的数据,所有数字都相等。
对于 70% 的数据,有 3≤n≤100。
对于 100% 的数据,3 ≤ n ≤ 1000,'正整数'大小不超过 10,000。
C++代码
#include <iostream>
#include <vector>
#include <unordered_set>
using namespace std;
int main() {
int n;
cin >> n;
vector<int> nums(n);
for (int i = 0; i < n; i++) {
cin >> nums[i];
}
int count = 0;
unordered_set<int> numSet(nums.begin(), nums.end());
for (int i = 0; i < n; i++) {
for (int j = i + 1; j < n; j++) {
int sum = nums[i] + nums[j];
if (numSet.find(sum) != numSet.end()) {
count++;
}
}
}
cout << count << endl;
return 0;
}
原文地址: https://www.cveoy.top/t/topic/phOn 著作权归作者所有。请勿转载和采集!