길이가 N인 수열 a1,a2,…,aN과 정수 x가 주어진다. 연속한 원소의 xor가 x 이상인 구간 중에서 가장 긴 것을 찾아라. 즉 다음 조건을 만족하면서 k가 최대인 i와 k를 구한다.
ai⊕ai+1⊕⋯⊕ai+k−1≥x,1≤i≤i+k−1≤N
입력으로 주어지는 모든 데이터에는 조건을 만족하는 구간이 적어도 하나 있다.
xor(⊕)는 두 수를 이진법으로 적었을 때 같은 자리의 비트마다 다음 규칙을 적용한 결과다.
- 0⊕0=0
- 0⊕1=1
- 1⊕0=1
- 1⊕1=0
결과는 피연산자의 순서와 무관해서 a⊕b=b⊕a이고, a⊕(a⊕b)=b이다. 파스칼에서는 xor, C와 C++, 자바에서는 ^ 연산자로 쓴다.