NOIP2014珠心算測驗
題目描述
(說明:本題共10個測試點,每個測試點時限均爲1秒,運行內存上限爲128MB)
珠心算是一種通過在腦中模擬算盤變化來完成快速運算的一種計算技術。珠心算訓練,既能夠開發智力,又能夠爲日常生活帶來很多便利,因而在很多學校得到普及。
某學校的珠心算老師採用一種快速考察珠心算加法能力的測驗方法。他隨機生成一個正整數集合,集合中的數各不相同,然後要求學生回答:其中有多少個數,恰好等於集合中另外兩個(不同的)數之和?
最近老師出了一些測驗題,請你幫忙求出答案。
輸入格式
輸入共兩行,第一行包含一個整數n,表示測試題中給出的正整數個數。
第二行有n個正整數,每兩個數之間用一個空格隔開,表示測試題中給出的正整數。
數據說明:對於100% 的數據,3≤n≤100,測驗題給出的正整數大小不超過10,000。
輸出格式
輸出共一行,包含一個整數,表示測驗題答案。
輸入樣例 1
4
1 2 3 4
輸出樣例 1
2
(樣例說明:由1+2=3,1+3=4,故滿足測試要求的答案爲2。
注意,加數和被加數必須是集合中的兩個不同的數。)
題目來源
NOIP2014普及組第1題
一道簡單的模擬+枚舉
可以看到,這題數據非常小三重循環都可以忍受,所以枚舉就可以
第一層循環枚舉一個加數,第二層枚舉第二個加數,第三層枚舉和就可以了。
注意:兩個加數不可以相等
好了,上代碼:
#include<bits/stdc++.h>
using namespace std;
int a[101];
int h[10001];
int main()
{
int n,i,j;
cin>>n;
for(i=1;i<=n;i++)
cin>>a[i];
sort(a+1,a+n+1);
for(i=1;i<=n;i++)
{
for(j=i+1;j<=n;j++)
{
for(int k=1;k<=n;k++)
{
if(j!=k and a[k]==a[i]+a[j] and k!=i)
h[a[k]]++;
}
}
}
int c=0;
for(i=1;i<=10000;i++)
{
if(h[i]>=1)
c++;
}
cout<<c;
return 0;
}