从上排和下排各找一对,他们的异或还可以在这两排找到。若对数为偶:karen。
POINT:
可以暴力做,数组要开成2·106 *2,因为有些数异或出来会更大。
也可以直接输出karen,因为a^b=c,c属于两排之间,那么肯定存在a^c=b或者b^c=a。
那么答案肯定为偶数。
注意数中没有0,所以不用多虑。不可能有异或出来相等的情况。
#include <iostream>
#include <string.h>
#include <stdio.h>
#include <math.h>
#include<algorithm>
using namespace std;
#define LL long long
const int maxn = 2222;
int x[maxn];
int y[maxn];
int flag[4000000+44];
int main()
{
int n;
scanf("%d",&n);
for(int i=1;i<=n;i++){
scanf("%d",&x[i]);
flag[x[i]]=1;
}
for(int i=1;i<=n;i++){
scanf("%d",&y[i]);
flag[y[i]]=1;
}
int ans=0;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
if(flag[x[i]^y[j]]==1){
ans++;
}
}
}
if((ans%2)==0){
printf("Karen\n");
}else{
printf("Koyomi\n");
}
}