2 条题解
-
0
#include<bits/stdc++.h> // 包含所有常用的库 using namespace std; // 使用标准命名空间 int a[100005]; // 定义一个可以存放很多数字的大数组 int main(){ int n, x; // n: 数字个数, x: 目标和 int *b; // 指针b,用来指向找到的数字位置 cin >> n; // 输入数字的个数 for(int i = 0; i < n; i++) cin >> a[i]; // 循环输入每个数字 cin >> x; // 输入我们要找的和x sort(a, a + n); // 把数组里的数字从小到大排序(像排队一样) // 遍历数组中的每个数字 for(int i = 0; i < n; i++){ // 用魔法工具(lower_bound)在数组中寻找与a[i]配对的数字 // 这个工具会帮我们找到第一个 >= (x - a[i]) 的数字位置 b = lower_bound(a, a + n, x - a[i]); // 特殊情况:如果找到的位置刚好是自己 if(b - a == i) { // 检查下一个数字是否和自己不同(防止重复使用同一个位置) if(*(b+1) != *b) continue; // 跳过自己找下一个 } // 如果找到的数字正好等于我们需要的配对值 if(*b == x - a[i]) { // 打印这对数字 cout << a[i] << " " << *b; return 0; // 结束程序 } } // 如果遍历完都没找到 cout << "No"; // 输出"No" return 0; }
- 1
信息
- ID
- 258
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 9
- 标签
- 递交数
- 9
- 已通过
- 6
- 上传者