版权声明:本文为DyingShu原创文章,转载请注明出处哦。 https://blog.csdn.net/DyingShu/article/details/82825130
题目描述
Tommy和Karen在玩一个游戏。
他们各自准备了一个长度为n的数组,Tommy的数组称作a,Karen的数组称作b。
保证这2n个数互不相同,设这2n个数构成的集合为S。
现在他们想知道,有多少对(i,j)满足a[i] xor b[j]的结果在集合S中。
当这个数为奇数的时候,Tommy获胜,否则Karen获胜。
现在给你n和这两个数组,你需要告诉他们是谁赢了。
输入
第一行一个整数T,表示数据组数。
每组数据内,第一行一个正整数n。
每组数据内,第二行n个正整数,表示数组a。
每组数据内,第三行n个正整数,表示数组b。
输出
输出T行,每行一个字符串Tommy或者Karen,表示谁胜利了。
唉,就是道结论题,害我想了一个小时
当
里的数都大于1时,若存在
:
- 当 时,有
- 当 时,有
所以答案只能是偶数,即Karen获胜。
怪不得看几个样例全是Karen胜。。。
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int MAXN = 200001;
int Ans;
int a[MAXN], b[MAXN];
inline int read(){
int k = 0, f = 1; char ch = getchar();
while(ch < '0' || ch > '9'){if(ch == '-') f = -1; ch = getchar();}
while(ch >= '0' && ch <= '9'){k = k*10 + ch - '0'; ch = getchar();}
return k * f;
}
int main(){
int n = read(), Ans = 0;
for(int i = 1; i <= n; i++){
a[i] = read();
}
for(int i = 1; i <= n; i++){
b[i] = read();
}
puts("Karen");
return 0;
}
总结:要勤于打表