1. 程式人生 > >Find the Lost Sock

Find the Lost Sock

超時 輸入 我們 pac i++ time clu char mil

描述

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.

輸入

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.

輸出

The name of the lost sock.

樣例輸入

2
aabcdef
bzyxwvu
bzyxwvu
4
aqwerty
eas fgh
aqwerty
easdfgh
easdfgh
aqwerty

aqwerty
2
0x0abcd
0ABCDEF
0x0abcd

樣例輸出

aabcdef
eas fgh
0ABCDEF

提示

Because of HUGE input, scanf is recommended.

解題思路:

數據量很大,用map存會超時。由於一位學長的指點,了解到了按位異或,當一個數出現了兩次的時候就會抵消,所以我們只要不斷按位異或,最後剩下的就是答案。

比如 1 1 3 2 2

我們只要按位異或 1->0->3->1->3

最後的3便是所求的答案。

#include <bits/stdc++.h>
using namespace
std; int main() { int n,m,i,j,k; while(cin>>n) { getchar(); int s[8]={0};char a[10]; for(i=1;i<=2*n-1;i++) { gets(a); for(j=0;j<7;j++) s[j]=s[j]^(char)a[j]; } for(i=0;i<7;i++) cout<<(char)s[i]; cout<<"\n"; } }

Find the Lost Sock