珠心算是一種通過在腦中模擬算盤變化來完成快速運算的一種計算技術。珠心算訓練,既能夠開發智力,又能夠為日常生活帶來很多便利,因而在很多學校得到普及。某學校的珠心算老師採用一種快速考察珠心算加法能力的測驗方法。他隨機生成乙個正整數集合,集合中的數各不相同,然後要求學生回答:其中有多少個數,恰好等於集合中另外兩個(不同的)數之和?
最近老師出了一些測驗題,請你幫忙求出答案。
(本題目為2014noip普及t1)
共兩行,第一行包含乙個整數n,表示測試題中給出的正整數個數。
第二行有n個正整數,每兩個正整數之間用乙個空格隔開,表示測試題中給出的正整數。
乙個整數,表示測驗題答案。
輸入 #1
4輸出 #11 2 3 4
2【樣例說明】由1+2=3,1+3=4,故滿足測試要求的答案為2。
注意,加數和被加數必須是集合中的兩個不同的數。
【資料說明】
對於100%的資料,3≤n≤100,測驗題給出的正整數大小不超過10,000。
看見這個題目,我想,大家腦袋裡面的第乙個思路應該是暴力求解,具體的思路是,遍歷該隨機正整數集合,求該正整數集合中的所有兩數之和,然後將求出的和與正整數集合的每個元素進行比較,如果相等,便使計數變數加1,這裡需要特別注意一點就是,對於乙個正整數集合求其中的某兩個元素之和,有可能會出現和重複的情況,比如對於正整數集和,假設我們遍歷到1+4=5,那麼此時計數器便會加1,但是觀察此正整數集合,發現2+3=5,也是等於5,如果我們不做任何處理的話,那麼針對此集合,計數變數的值就會被多加1次,我們可以這樣解決,多開乙個陣列,將其陣列全部置為0,假設現在1+4=5了,那麼我們可以將5所在的那個陣列下標所對應的那個值置為0,這樣一來,當計算到2+3=5的時候,要拿5的值去和集合中的元素比較,此時集合中的元素已經為0了,不可能相等,所以計數變數不會多加1,具體**實現如下:#include using namespace std;
int main()
,b[101]=;
int n;
int sum=0;
int count=0;
cin >> n;
for(int i=0;i>a[i];
b[i]=a[i];
}for(int i=0;i此方法一開始up也沒有想到,也是通過參考別人的**而理解的,具體的思路是這樣的,先算出集合中兩兩數相加的和,然後將此和做乙個記錄,代表有這樣乙個和存在,接著,將集合中的正整數做乙個記錄,代表在集合中存在這樣的正整數,接下去,對已做的記錄進行遍歷然後判斷,如果條件:存在兩數之和的數,並且此數存在集合中,那麼計算變數+1,具體**如下:
#include using namespace std;
const int m=20000;
int t[m],g[m];
int maxn; //減少遍歷的次數
int main()
for(int i=0;i0&&g[i])
count++;
}
cout
}
珠心算測驗
題目 來自 題目描述 description 珠心算是一種通過在腦中模擬算盤變化來完成快速運算的一種計算技術。珠心算訓練,既能夠開發智力,又能夠為日常生活帶來很多便利,因而在很多學校得到普及。某學校的珠心算老師採用一種快速考察珠心算加法能力的測驗方法。他隨機生成乙個正整數集合,集合中的數各不相同,然...
珠心算測驗
題目描述 珠心算是一種通過在腦中模擬算盤變化來完成快速運算的一種計算技術。珠心算訓練,既能夠開發智力,又能夠為日常生活帶來很多便利,因而在很多學校得到普及。某學校的珠心算老師採用一種快速考察珠心算加法能力的測驗方法。他隨機生成乙個正整數集合,集合中的數各不相同,然後要求學生回答 其中有多少個數,恰好...
珠心算測驗
題目描述 珠心算是一種通過在腦中模擬算盤變化來完成快速運算的一種計算技術。珠心算訓練,既能夠開發智力,又能夠為日常生活帶來很多便利,因而在很多學校得到普及。某學校的珠心算老師採用一種快速考察珠心算加法能力的測驗方法。他隨機生成乙個正整數集合,集合中的數各不相同,然後要求學生回答 其中有多少個數,恰好...