问题描述
有 N 个非零且各不相同的整数。请你编一个程序求出它们中有多少对相反数(a 和 -a 为一对相反数)。
输入格式
第一行包含一个正整数 N。(1 ≤ N ≤ 500)。 第二行为 N 个用单个空格隔开的非零整数,每个数的绝对值不超过1000,保证这些整数各不相同。
输出格式
只输出一个整数,即这 N 个数中包含多少对相反数。
样例输入
5 1 2 3 -1 -2
样例输出
2
AC代码#include <iostream> #include <set> using namespace std; int n; int data; set<int> s; set<int>::iterator it,tmp; int cnt; int main() { while(cin>>n){ for(int i = 0 ; i < n ; i++){ cin>>data; s.insert(data); } cnt = 0; for(it = s.begin() ; it != s.end() ;){ tmp = s.find(-1*(*it)); if(tmp != s.end()){ cnt++; s.erase(tmp); s.erase(it); it = s.begin(); }else{ it++; } } cout<<cnt; } return 0; } ---来自腾讯云社区的---AI那点小事
微信扫一扫打赏
支付宝扫一扫打赏