天天看點

201403-1-相反數

題目

問題描述

  有 N 個非零且各不相同的整數。請你編一個程式求出它們中有多少對相反數(a 和 -a 為一對相反數)。

輸入格式

  第一行包含一個正整數 N。(1 ≤ N ≤ 500)。

  第二行為 N 個用單個空格隔開的非零整數,每個數的絕對值不超過1000,保證這些整數各不相同。

輸出格式

  隻輸出一個整數,即這 N 個數中包含多少對相反數。

樣例輸入

5

1 2 3 -1 -2

樣例輸出

2

我的代碼

#include <iostream>
#include<cmath>
#include<cstring>
using namespace std;
 
int main(int argc, char *argv[]) {
	int a[1001];
	memset(a,-1,sizeof(a));
	int n,i;
	cin>>n;
	while(n--)
	{
		cin>>i;
		i=fabs(i);
		a[i]++;
	}
	for(i=0,n=0;i<1001;i++)
		if(a[i]==1)
			n++;
	cout<<n;
	return 0;
}

           

我的思路

由于不存在相同的數,是以統計數值的絕對值出現次數為兩次的即為一對,然後用計數器統計即可