1416- Find the Lost Sock(异或运算) ZCMU
Description
Alice bought a lot of pairs of socks yesterday. But when she went home, she found that she has lost one of them. Each sock has a name which contains exactly 7 charaters.
Alice wants to know which sock she has lost. Maybe you can help her.
Input
There are multiple cases. The first line containing an integer n (1 <= n <= 1000000) indicates that Alice bought n pairs of socks. For the following 2*n-1 lines, each line is a string with 7 charaters indicating the name of the socks that Alice took back.
Output
The name of the lost sock.
Sample Input
2
aabcdef
bzyxwvu
bzyxwvu
4
aqwerty
easafgh
aqwerty
easdfgh
easdfgh
aqwerty
aqwerty
2
0x0abcd
0ABCDEF
0x0abcd
Sample Output
aabcdef
easafgh
0ABCDEF
解析
看到这道题的第一反应是用map做,但发现超时。看了别人的代码,发现还有更简单的方法-异或运算
代码
#include<stdio.h>
int main()
{
int n,i,j;
char s[10],sock[10];
while(~scanf("%d",&n))
{
scanf("%s",s);
for(i=2;i<=2*n-1;i++)
{
scanf("%s",sock);
for(j=0;j<7;j++)
{
s[j]^=sock[j];
}
}
printf("%s\n",s);
}
return 0;
}
// A^B^A=A^(B^A)=A^A^B=B
上一篇: #4706. 异或
下一篇: zcmu--1548: 签到(异或)