問題の説明
ゼロ以外のN個の異なる整数があります。反対のペア(aと-aは反対)のペアを見つけるプログラムを作成してください。
入力形式
最初の行には正の整数Nが含まれています。(1≤N≤500)。
2行目は、1つのスペースで区切られたN個のゼロ以外の整数であり、これらの整数が確実に異なるように、各数値の絶対値は1000を超えません。
出力形式
は、整数を1つだけ出力します。つまり、これらのN個の数値に含まれる反対の数値のペアの数。
サンプル入力
5
1 2 3 -1 -2
サンプル出力
2
経験の要約
各数値の絶対値は1000を超えないため、データを格納するために長さ1001の配列を作成できます。
各数値は異なり、ゼロではないため、2つの数値の合計が0の場合、それは反対の数値のペアでなければなりません。
このように、各数値の絶対値を添え字として使用でき、値は元の値にこの数値を加えたものになります。加算後の結果が0の場合は、反対の数値のペアになります。
C ++コード:
#include<bits/stdc++.h>
using namespace std;
int num[1001];
int main() {
int n,cnt = 0;
scanf("%d",&n);
for(int i=0;i<n;i++){
int a;
scanf("%d",&a);
num[abs(a)] += a;
if(0 == num[abs(a)]){
cnt++;
}
}
printf("%d",cnt);
return 0;
}