酷代码 AI
菜单

题目描述 珠心算是一种通过在脑中模拟算盘变化来完成快速运算的一种计算技术。珠心算训练,既能够开发智力,又能够为日常生活带来很多便利,因而在很多学校得到普及。 某学校的珠心算老师采用一种快速考察珠心算加法能力的测验方法。他随机生成一个正整数集合,集合中的数各不相同,然后要求学生回答:其中有多少个数,恰好等于集合中另外两个(不同的)数之和? 最近老师出了一些测验题,请你帮忙求出答案。 输入格式 共两行,第一行包含一个整数 n,表示测试题中给出的正整数个数。 第二行有 n 个正整数,每两个正整数之间用一个空格隔开,表示测试题中给出的正整数。 输出格式 一个整数,表示测验题答案。 输入输出样例 输入 #1复制 4 1 2 3 4 输出 #1复制 2 说明/提示 【样例说明】 由 1+2=3,1+3=4,故满足测试要求的答案为 2。 注意,加数和被加数必须是集合中的两个不同的数。 【数据说明】 对于 100% 的数据,3≤n≤100,测验题给出的正整数大小不超过 10,000。 用c++语言

```cpp #include <iostream> #include <set> using namespace std; int main() { int n; cin >> n; int numbers[100]; set<int> sums; set<int> ans; // 读取输入的正整数 for (int i = 0; i < n; i++) { cin >> numbers[i]; } // 计算所有不同两数之和 for (int i = 0; i < n; i++) { for (int j = i + 1; j < n; j++) { sums.insert(numbers[i] + numbers[j]); } } // 检查集合中的数是否等于另外两个数之和 for (int i = 0; i < n; i++) { if (sums.find(numbers[i]) != sums.end()) { ans.insert(numbers[i]); } } // 输出结果 cout << ans.size() << endl; return 0; } ``` 代码解释: 1. 输入处理:首先读取正整数的个数`n`,然后将这些正整数存储在数组`numbers`中。 2. 计算两数之和:使用两层循环遍历数组,计算所有不同两数之和,并将这些和存储在`set`容器`sums`中。 3. 检查是否满足条件:遍历数组中的每个数,检查它是否在`sums`集合中。如果存在,则将该数插入到另一个`set`容器`ans`中。 4. 输出结果:由于`set`容器会自动去重,所以`ans`的大小就是满足条件的数的个数,将其输出。 复杂度分析: - 时间复杂度:$O(n^2)$,主要是计算两数之和的两层循环。 - 空间复杂度:$O(n^2)$,主要用于存储两数之和的集合。 [2025-11-24 19:17:14 | AI问答 | 452点数解答]

服务商
相关提问
发财导航,免费问AI
实用工具查看更多