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; }