kmjp's blog

競技プログラミング参加記です

AtCoder ABC #171 : E - Red Scarf

E,Fは簡単でCに手間取りまくった。
https://atcoder.jp/contests/abc171/tasks/abc171_e

問題

N(偶数)要素の整数列Bがあったとする。
A[i] := (BからB[i]を取り除いたもののxor)
で構築される整数列Aが与えられる。
Bを復元せよ。

解法

Aの全要素のxorをCとすると、CにはB[i]が奇数回ずつxorされた値が入る。
あとはB[i]=C^A[i]を返せばよい。

int N;
int A[202020];

void solve() {
	int i,j,k,l,r,x,y; string s;
	
	cin>>N;
	int xo=0;
	FOR(i,N) {
		cin>>A[i];
		xo^=A[i];
	}
	FOR(i,N) cout<<(xo^A[i])<<" ";
	cout<<endl;
	
}

まとめ

ABCのEにしては簡単。