有N名(保证N为偶数)特工,这其中混入了2名奸细,谁也不知道是哪个。好在真正的特工都有自己的编号,并且编号都是成对出现的,既2名真正特工拥有相同编号,而那2名奸细只能各自瞎编一个编号。 输入 2行 第1行包含一个整数N(保证为偶数,0 < N <= 1000000) 第2行包含N个int范围内的整数,代表每个人的编号,空格隔开 输出 2名奸细的编号(顺序和输出一致),空格隔开 样例输入 6 54321 34 12345 54321 33 12345 样例输出 34 33
时间: 2024-04-13 11:28:57 浏览: 109
以下是使用C++实现的代码:
```cpp
#include <iostream>
#include <unordered_map>
#include <vector>
using namespace std;
int main() {
int N;
cin >> N;
unordered_map<int, int> count;
vector<int> nums(N);
for (int i = 0; i < N; i++) {
cin >> nums[i];
count[nums[i]]++;
}
int num1, num2;
for (int i = 0; i < N; i++) {
if (count[nums[i]] == 1) {
if (num1 == 0) {
num1 = nums[i];
} else {
num2 = nums[i];
break;
}
}
}
cout << num1 << " " << num2 << endl;
return 0;
}
```
首先,我们使用一个unordered_map来记录每个编号出现的次数。然后,遍历输入的所有编号,如果某个编号的出现次数为1,则说明这是其中一个奸细的编号。我们用两个变量`num1`和`num2`来分别保存奸细的编号,遇到第一个奸细时,将其赋值给`num1`,遇到第二个奸细时,将其赋值给`num2`,并且退出循环。最后,输出`num1`和`num2`即为答案。
阅读全文