问题描述
有 $N$ 个非零且各不相同的整数。请你编一个程序求出它们中有多少对相反数($a$ 和 $-a$ 为一对相反数)。
输入格式
第一行包含一个正整数 $N$。$(1 ≤ N ≤ 500)$。
第二行为 $N$ 个用单个空格隔开的非零整数,每个数的绝对值不超过$1000$,保证这些整数各不相同。
输出格式
只输出一个整数,即这 $N$ 个数中包含多少对相反数。
样例输入
5
1 2 3 -1 -2
样例输出
2
题目分析
语法题
保证输入整数互不相同,所以直接看输入的数的相反数是否存在即可(哈希表,标记都可)
C++代码
#include <bits/stdc++.h>
using namespace std;
map<int , int> p;
int main()
{
int n;
cin >> n;
int cnt = 0;
while (n -- )
{
int x;
cin >> x;
if(p[abs(x)]) cnt ++;
else p[abs(x)] ++;
}
cout << cnt << '\n';
return 0;
}