CCF認證-20140301-相反數
阿新 • • 發佈:2019-01-08
問題描述
試題編號: | 201403-1 |
試題名稱: | 相反數 |
時間限制: | 1.0s |
記憶體限制: | 256.0MB |
問題描述: |
問題描述 有 N 個非零且各不相同的整數。請你編一個程式求出它們中有多少對相反數(a 和 -a 為一對相反數)。 輸入格式 第一行包含一個正整數 N。(1 ≤ N ≤ 500)。 輸出格式 只輸出一個整數,即這 N 個數中包含多少對相反數。 樣例輸入 5 樣例輸出 2 |
演算法設計:
將給定序列進行排序,然後遍歷負數元素和0,利用二分查詢演算法在整個序列中查詢當前元素的相反數,統計能查詢到相反數的數量即可。
c++程式碼:
#include<bits/stdc++.h> using namespace std; int main(){ int N; scanf("%d",&N); int a[N]; for(int i=0;i<N;++i) scanf("%d",&a[i]); sort(a,a+N); int num=0; for(int i=0;a[i]<=0;++i) if(binary_search(a+i+1,a+N,-a[i])) ++num; printf("%d",num); return 0; }