Amal과 Bimal이 게임을 하고 있다고 가정합니다. 안에는 하나 이상의 초콜릿이 들어 있는 n개의 용기가 있습니다. 이 용기에는 1에서 N까지 번호가 매겨져 있으며 i번째 용기에는 count[i]개의 초콜릿이 있습니다. 이제 게임은 같습니다. 첫 번째 플레이어는 용기를 선택하고 하나 이상의 초콜릿을 가져옵니다. 그런 다음 두 번째 플레이어는 비어 있지 않은 용기를 선택하고 하나 이상의 초콜릿을 가져옵니다. 이와 같이 번갈아가며 플레이합니다. 플레이어 중 한 명이 초콜릿을 가져갈 방법이 없으면 게임에서 집니다. Amal의 차례가 첫 번째인 경우 Amal이 항상 승리하도록 첫 번째 이동을 할 수 있는 방법을 찾아야 합니다.
따라서 입력이 count =[2, 3]과 같으면 처음에 컨테이너가 [2, 3]과 같기 때문에 출력은 1이 됩니다. 이렇게 플레이할 수 있습니다.
- Amal은 두 번째 용기에서 초콜릿 하나를 선택하므로 현재 [2, 2]
- Bimal은 첫 번째 용기에서 초콜릿 하나를 선택하므로 현재 [1, 2]
- Amal은 두 번째 용기에서 초콜릿 하나를 선택하므로 현재 [1, 1]
- Bimal은 첫 번째 용기에서 초콜릿 하나를 선택하므로 현재 [0, 1]
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
- tmp :=0
- 카운트의 각 c에 대해 수행
- tmp :=tmp XOR c
- tmp가 0이면
- 0을 반환
- 그렇지 않으면
- 움직임 :=0
- 카운트의 각 c에 대해 수행
- 이동 :=이동 + ((tmp XOR c)
- 이동 :=이동 + ((tmp XOR c)
- 반환 동작
예시
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
def solve(count): tmp = 0 for c in count: tmp ^= c if not tmp: return 0 else: moves = 0 for c in count: moves += (tmp^c) < c return moves count = [2, 3] print(solve(count))
입력
[2, 3]
출력
1