두 개의 숫자 k와 target이 있다고 가정합니다. 이제 Amal과 Bimal이 게임을 하고 있다고 생각해 보십시오. 각 라운드에서 Amal은 1에서 k까지의 숫자를 선택하여 처음에 0에서 시작하는 총 점수에 추가합니다. 총점을 목표로 통과하는 사람이 승리합니다. Amal은 항상 먼저 플레이합니다. 우리는 둘 다 최적의 플레이를 한다면 그가 강제로 승리할 수 있는지 확인해야 합니다.
따라서 입력이 k =5 target =10과 같으면 Amal이 먼저 4를 선택한 다음 Bimal이 1, 2, ... 또는 5를 선택하든 Amal은 선택하여 항상 10에 도달할 수 있습니다. 다음 5.
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
- 목표 %(k + 1)가 0이 아니면
- 참을 반환
- 그렇지 않으면
- 거짓 반환
예시
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
def solve(k, target): return target % (k + 1) != 0 k = 5 target = 10 print(solve(k, target))
입력
5, 10
출력
True