1. 程式人生 > >洛谷 P2141 珠心算測驗

洛谷 P2141 珠心算測驗

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

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

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

(本題目為2014NOIP普及T1)

輸入輸出格式

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

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

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

輸入輸出樣例
輸入樣例#1:
4
1 2 3 4

輸出樣例#1:
2

說明
【樣例說明】

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

【資料說明】

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

程式碼:

# include <iostream>
using namespace std;
int a[101], b[101];
int main(){
    int n, i, j, s, k, sum = 0;
    cin
>>n; for(i = 1; i <= n; ++i){ cin>>a[i]; b[i] = a[i]; } for(i = 1; i < n; ++i){ for(j = i + 1; j <= n; ++j){ s = a[i] + a[j]; for(k = 1; k <= n; ++k){ if(b[k] == s && b[k] != 0){//必須要用一個數組來標記 sum += 1
; b[k] = 0; } } } } cout<<sum<<endl; return 0; }

為什麼要用一個數組來進行標記:比如輸入5個數,1 2 3 4 5,那麼5這個數字,1+4=5,2+3=5,就會加2次。但是按照題目要求,5這個數字只能加一次,所以要用一個數組來標記累加過的數字。