1. 程式人生 > >#136-(EZOI模擬賽)【水】珠心算測驗

#136-(EZOI模擬賽)【水】珠心算測驗

Description

珠心算是一種通過在腦中模擬算盤變化來完成快速運算的一種計算技術。珠心算訓練,既能夠開發智力,又能夠為日常生活帶來很多便利,因而在很多學校得到普及。

某學校的珠心算老師採用一種快速考察珠心算加法能力的測驗方法。他隨機生成一個正整數集合,集合中的數各不相同,然後要求學生回答:其中有多少個數,恰好等於集合中另外兩個(不同的)數之和?

最近老師出了一些測驗題,請你幫忙求出答案。

Input

輸入共兩行,第一行包含一個整數n,表示測試題中給出的正整數個數。

第二行有n個正整數,每兩個正整數之間用一個空格隔開,表示測試題中給出的正整數。

Output

輸出共一行,包含一個整數,表示測驗題答案。

Sample Input

4
1 2 3 4

Sample Output

2

HINT

【樣例說明】

由1+2=3,1+3=4,故滿足測試要求的答案為2。注意,加數和被加數必須是集合中的兩個不同的數。

【資料說明】

對於100%的資料,3 ≤  n  ≤  100,測驗題給出的正整數大小不超過10,000。

結合一個SET。

#include <iostream>
#include <cstdio>
#include <set>

#define SIZE 110

using namespace std;

set<int> s, s2;
int a[SIZE];

int main(void)
{
	int n, i, j;
	
	scanf("%d", &n);
	for (i = 1; i <= n; ++i)
	{
		scanf("%d", &a[i]);
		s.insert(a[i]);
	}
	
	for (i = 1; i <= n; ++i)
	{
		for (j = i + 1; j <= n; ++j)
		{
			if (s.count(a[i] + a[j])) // 如果這兩個數的和出現過
			{
				s2.insert(a[i] + a[j]); // 就把和放入答案列表中(set自動去重)
			}
		}
	}
	
	printf("%d", s2.size());
	
	return 0;
}