試題編号: | 201403-1 |
---|---|
試題名稱: | 相反數 |
時間限制: | 1.0s |
記憶體限制: | 256.0MB |
問題描述: | 有 N 個非零且各不相同的整數。請你編一個程式求出它們中有多少對相反數(a 和 -a 為一對相反數)。 |
輸入格式: | 第一行包含一個正整數 N。(1 ≤ N ≤ 500)。 第二行為 N 個用單個空格隔開的非零整數,每個數的絕對值不超過1000,保證這些整數各不相同。 |
輸出格式: | 隻輸出一個整數,即這 N 個數中包含多少對相反數。 |
樣例輸入: | 5 1 2 3 -1 -2 |
樣例輸出: | 2 |
思路:
1.用一個數組存儲該數字是否出現過;
2.用一個數組存儲曆史出現過該數字的和,如果和為0且該數字出現過,則說明出現過它的相反數;
代碼:
#define IOS ios_base::sync_with_stdio(0); cin.tie(0);
#include<iostream>
using namespace std;
#define N 1005
int sum[N],num[N];
int main(){
IOS;
int n,ans=0;
cin>>n;
for(int i=0;i<n;i++){
int a;
cin>>a;
if(a>0) {num[a]=1;sum[a]+=a;}
else sum[-1*a]+=a;
}
for(int i=1;i<N;i++)
if(num[i]&&!sum[i]) ans++;
cout<<ans;
return 0;
}