前言
在学校打模拟赛的时候遇到这个系列的题目,没想出来,讲解的时候才恍然大悟。
思路
首先,我们输入 并将
。第
个字符串记为
。我们假设最后一个操作将它清空且原始数组已知,那么:
- 每一个字母都会出现 (
为正整数) 次,才有可能将它清空(第一次为原始数组或替换而成,第二次再将其替换掉)。因为如果没有出现
次,那么必然会存留
个字母。
所以,我们就找出出现次数为奇数的字母,输出即可。
代码
```cpp
#include<bits/stdc++.h>
using namespace std;
int t,n,a[30];
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL),cout.tie(NULL);
cin>>t;
while(t--) {
memset(a,0,sizeof(a));
cin>>n;
n *= 2;
n++;
while(n--) {
string v;
cin>>v;
int x = v.size();
for(int i = 0;i < x;i++) a[(int)v[i] - 96]++;
}
for(int i = 1;i <= 26;i++) if(a[i] & 1) cout<<char(i + 96)<<endl;
}
}
```