C++9018:1587——珠心算測驗

題目來自:http://218.5.5.242:9018/JudgeOnline/problem.php?id=1587php

題目描述

    珠心算是一種經過在腦中模擬算盤變化來完成快速運算的一種計算技術。珠心算訓練,既可以開發智力,又可以爲平常生活帶來不少便利,於是在不少學校獲得普及。
    某學校的珠心算老師採用一種快速考察珠心算加法能力的測驗方法。他隨機生成一個正整數集合,集合中的數各不相同,而後要求學生回答:其中有多少個數,剛好等於集合中另外兩個(不一樣的)數之和?
    最近老師出了一些測驗題,請你幫忙求出答案。c++

輸入

輸入文件名爲 count.in。
輸入共兩行,第一行包含一個整數 n,表示測試題中給出的正整數個數。
第二行有 n 個正整數,每兩個正整數之間用一個空格隔開,表示測試題中給出的正整數。測試

輸出

輸出文件名爲 count.out。
輸出共一行,包含一個整數,表示測驗題答案。spa

樣例輸入

4
1 2 3 4

樣例輸出

2

提示

【樣例說明】

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

【數聽說明】

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

做者分析:這道題n小於等於100因此咱們能夠使用時間複雜度爲n3的枚舉而且不會超時(雖然有點低級)。
blog

#include <bits/stdc++.h>
using namespace std;

int main(){
    int t[10001] = {0};
    int n,ans = 0;
    cin >> n;
    int a[n+1];
    for (int i = 0;i < n;i++) cin >> a[i];
    sort(a,a+n);
    for (int i = n - 1;i >= 0;i--){
        for (int j = 0;j < n;j++){
            for (int k = 0;k < n;k++){
                if (a[j] != a[k] && a[j] + a[k] == a[i] && !t[a[i]]){
                    ans++;
                    t[a[i]] = 1;
                }
            }
        }
    }
    cout << ans;
    return 0;
}
相關文章
相關標籤/搜索