어떤 양의 정수 N의 이진 표현의 길이를 L이라 하자.
길이가 L인 비트열 P=(P1,P2,⋯,P이 주어진다. 각 Pi는 어떤 양의 정수 ri에 대하여 Pi≡ri(mod2)를 만족한다.
양의 정수 x에 대하여 다음 과정을 생각하자.
- 처음 수열 A=(1,2,⋯,2x)를 만든다.
- 수열 A의 길이가 1이 될 때까지 다음 연산을 반복한다.
- 현재 수열에서 서로 다른 두 위치를 고르고, 그 위치의 값을 각각 라 하자.
두 원소를 고르는 방법은 임의이다. 이 문제에서 사용하는 f(x)의 홀짝성은 두 원소를 고르는 방법과 관계없이 동일함이 보장된다.
길이가 L인 비트열 K=(K1,K2,을 다음과 같이 정의한다.
Ki=
또한 K1을 최상위 비트, KL을 최하위 비트로 하는 이진수를 정수 K라 하자. 정수 는
C=N⊕K
를 만족한다. 여기서 ⊕는 비트 단위 XOR 연산이다.
비트열 P와 정수 C가 주어질 때, 원래의 정수 N을 구하여라.