1302 珠心算测验 简单枚举 简单模拟 普及组 NOIP2014

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 1e4+10, inf = 0x3f3f3f3f;
int a[N], vis[2 * N]; // vis数组用于标记哪些数在集合中
int ans, n;

int main() {
    cin >> n; // 读取整数个数
    for(int i = 1; i <= n; i++) {
        cin >> a[i]; // 读取每个整数
        vis[a[i]] = 1; // 标记该整数在集合中
    }

    for(int i = 1; i <= n; i++) {
        for(int j = i + 1; j <= n; j++) { // 遍历所有不同的数对
            if(vis[a[i] + a[j]]) { // 检查两数之和是否在集合中
                ans++; // 如果在,计数加1
                vis[a[i] + a[j]] = 0; // 防止重复计数,标记为已处理
            }
        }
    }

    cout << ans; // 输出满足条件的数的个数
    return 0;
}

 

posted @ 2024-10-17 16:40  CRt0729  阅读(5)  评论(0编辑  收藏  举报