使用C++ 问题描述 有 N 个非零且各不相同的整数。请你编一个程序求出它们中有多少对相反数(a 和 -a 为一对相反数)。 输入格式 第一行包含一个正整数 N。(1 ≤ N ≤ 500)。 第二行为 N 个用单个空格隔开的非零整数,每个数的绝对值不超过1000,保证这些整数各不相同。 输出格式 只输出一个整数,即这 N 个数中包含多少对相反数。 样例输入 5 1 2 3 -1 -2 样例输出 2给出代码
时间: 2024-04-12 16:27:27 浏览: 117
```cpp
#include <iostream>
#include <unordered_map>
#include <vector>
using namespace std;
int main() {
int N;
cin >> N;
unordered_map<int, int> numCount;
vector<int> nums(N);
for (int i = 0; i < N; i++) {
cin >> nums[i];
numCount[nums[i]]++;
}
int count = 0;
for (int i = 0; i < N; i++) {
int num = nums[i];
if (numCount[-num] > 0) {
count++;
}
}
cout << count << endl;
return 0;
}
```
注意:这段代码是用C++编写的,可以直接运行。它使用了unordered_map来统计每个数出现的次数,并使用vector来保存输入的整数。然后遍历每个数,如果它的相反数也在输入中出现,则相反数对的数量增加。最后输出结果。
相关问题
【问题描述】 有 N 个非零且各不相同的整数。请你编一个程序求出它们中有多少对相反数(a 和 -a 为一对相反数)。 【输入形式】 第一行包含一个正整数 N。(1 ≤ N ≤ 500)。 第二行为 N 个用单个空格隔开的非零整数,每个数的绝对值不超过1000,保证这些整数各不相同。 【输出形式】 只输出一个整数,即这 N 个数中包含多少对相反数。 【样例输入】 5 1 2 3 -1 -2 【样例输出】 2 C++实现
以下是基于题意的 C++ 实现:
```c++
#include <iostream>
#include <unordered_set>
using namespace std;
int main() {
int n;
cin >> n;
unordered_set<int> s; // 用哈希表存储
for (int i = 0; i < n; i++) {
int x;
cin >> x;
s.insert(x);
}
int ans = 0;
for (auto x : s) {
if (s.count(-x)) {
ans++;
}
}
cout << ans << endl;
return 0;
}
```
将输入的 n 个数放入一个哈希表中,遍历哈希表中的每一个数,如果它的相反数也在哈希表中,那么就说明找到了一对相反数,将答案加 1。最后输出答案即可。
使用C++写出问题描述 输入n个整数,使用循环语句计算它们的乘积并输出 输入描述 一个整数n,然后是n个整数 输出描述 这n个整数的乘积
在C++中,你可以使用循环结构如for或while,并结合乘法运算符`*`来解决这个问题。下面是一个简单的示例程序,它会读取用户输入的整数n以及n个整数,然后计算并输出它们的乘积:
```cpp
#include <iostream>
int main() {
int n, product = 1; // 初始化乘积为1
// 输入整数n
std::cout << "请输入一个整数n: ";
std::cin >> n;
// 循环读入n个整数并累乘
for (int i = 1; i <= n; ++i) {
int num;
std::cout << "请输入第" << i << "个整数: ";
std::cin >> num;
product *= num;
}
// 输出结果
std::cout << "这n个整数的乘积是: " << product << std::endl;
return 0;
}
```
在这个程序中,首先获取整数n,然后使用for循环从1到n依次读取每个整数,将它们相乘并将结果存储在变量product中。最后,显示乘积的结果。
阅读全文