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 eas fgh aqwerty easdfgh easdfgh aqwerty aqwerty 2 0x0abcd 0ABCDEF 0x0abcd
Sample Output
aabcdef eas fgh 0ABCDEF
题意:每双袜子有7个相同字符,找出丢失一只的袜子。
思路:先用暴力一个个比较再标记,n有1000000 超时,经指点用了位异或,发现位异或新用法0.0,或许是我从来没想过可以这样用= =,果然是——还差得远呢!。。
Accepted | 3432 | C++ | 730ms | 272kb |
#include <iostream> #include <algorithm> #include <cstdio> #include <cstring> using namespace std; char a[10],ans[10]; int main() { int n; while(scanf("%d",&n)!=EOF) { getchar(); memset(ans,0,sizeof(ans)); for(int i = 0; i < 2*n-1; i++) { for(int j = 0; j < 7; j++) { scanf("%c",&a[j]); ans[j] ^= a[j]; } getchar(); } ans[7] = '\0'; printf("%s\n",ans); } return 0; }