자물쇠 따기
시간 제한1초메모리 제한1024 MB
자물쇠의 초기 상태가 무엇이든, 두 장치가 10^7번 안에 불일치 비트를 N개 미만으로 기록하도록 열쇠카드를 만듭니다.
문제
헝가리 국고청은 금고 가운데 하나의 잠금 장치를 교체했다. 새 자물쇠는 전용 키카드로만 열 수 있다. 키카드의 검증은 특별한 프로토콜을 따른다.
자물쇠에는 0부터 까지 번호가 붙은 개의 내부 상태가 있다. 0 이상 이하의 각 에 대해 비트 가 있고, 상태 에는 두 상태 과 이 대응한다. 비트는 0 또는 1인 이진 숫자다. 과 은 같을 수 있으며, 상태가 자기 자신과 대응할 수도 있다.
마찬가지로 키카드에는 0부터 까지 번호가 붙은 개의 상태가 있다. 각 에 대해 비트 와 상태 , 이 대응한다. 이하에서는 자물쇠의 상태와 키카드의 상태를 모두 상태라고 부른다.
검증 과정에서 자물쇠는 키카드와 짝을 이룬다. 두 장치는 모두 비트를 출력할 수 있고, 상대가 출력한 비트를 읽을 수 있다. 과정이 시작될 때 자물쇠는 정해진 초기 상태 에 놓인다. 키카드도 자신의 초기 상태 에 놓인다. 두 장치는 다음 단계를 최대 번 반복한다.
- 각 장치는 현재 상태에 따라 비트 하나를 출력한다. 자물쇠가 상태 에 있으면 비트 를 출력한다. 마찬가지로 키카드가 상태 에 있으면 를 출력한다.
- 두 장치는 상대가 출력한 비트를 읽는다. 자물쇠는 를 읽고, 키카드는 를 읽는다. 두 비트가 다르면 오류를 한 번 기록한다.
- 두 장치는 읽은 비트와 현재 상태에 대응하는 상태에 따라 상태를 바꾼다. 자물쇠는 상태 로 들어가고, 키카드는 상태 로 들어간다.
오류 횟수가 에 도달하면 검증은 실패하고 과정은 종료된다. 오류를 번 이상 기록하지 않고 번의 반복을 모두 마치면 검증에 성공하여 자물쇠가 열린다.
자물쇠를 설치할 때 기계 담당자가 초기 상태 를 지정하지 않았다. 그래서 자물쇠가 키카드와 짝을 이룰 때마다 자물쇠는 임의의 알 수 없는 초기 상태에서 시작한다.
이 실수에도 불구하고 자물쇠를 열 수 있는 키카드를 만드는 것이 여러분의 과제다.
제한
- (각 에 대해 )
- 이고 (각 에 대해 )
- (각 에 대해 )
- 이고 (각 에 대해 )