有 N 个非零且各不相同的整数。
请你编一个程序求出它们中有多少对相反数(a 和 −a 为一对相反数)。
输入格式:
第一行包含一个正整数 N。
第二行为 N 个用单个空格隔开的非零整数,每个数的绝对值不超过 1000,保证这些整数各不相同。
输出格式:
只输出一个整数,即这 N 个数中包含多少对相反数。
数据范围:
1≤N≤500
输入样例:
5
1 2 3 -1 -2
输出样例:
2
C++:
/*
先将每个整数取个绝对值,如果存在一对相反数,那么必然有两个重复的数
利用数组实现哈希表,存储每个数字出现的次数
*/
#include<bits/stdc++.h>
using namespace std;
const int N = 1010;
int num[N],n;
int main(){
cin >> n;
while(n--){
int x;
cin >> x;
num[abs(x)] ++ ;
}
int res = 0;
for(int i = 0 ; i < N;i++){
if(num[i]==2){
res ++ ;
}
}
cout << res << endl;
return 0;
}