====== Game of Stones ====== ===== 풀이 ===== * 경우를 나눠서 생각해봐야 한다. 우선 가장 돌이 많은 파일의 돌 갯수를 m이라고 하자. * A와 B가 모두 m이상이라면, 누구든 하나의 파일에서 원하는 만큼 돌을 제거할수 있다. 이것은 그냥 제약 없는 님게임과 똑같아지므로, 모든 파일들의 돌 갯수를 xor한 것이 그런디 수가 된다. * A와 B가 같다면, 일반적인 배스킨라빈스 게임을 여러개의 파일로 확장한 것과 동일하다. 배스킨라빈스 게임의 그런디 수는 n % (A+1) 이므로, 모든 파일에서 이 값을 계산해서 xor하면 그런디수가 된다. * A>B 인 경우는 조금 생각이 필요하다. 선공이 후공보다 더 많은 선택지를 갖지만, 만약 선공이 자기도 똑같이 1~B 까지만 제거하겠다고 하고서 게임을 한다고 치자. 그러면 배스킨라빈스 게임이 되고, n%(B+1) 값들을 xor했을때 0보다 크다면, 선공은 1~B만 쓰고도 이길수 있다. 그런데 만약 그런디수가 0이었을 경우에는, 선공은 1~B만 쓰고서는 이길수가 없다. 대신 첫턴에만 B+1만큼을 제거해보자 (맨 처음에 m이 B이하인 경우는 제외했으니, 지금은 B+1개를 제거할수 있는 파일이 1개 이상 존재한다). 그런디수는 B+1로 나눈 나머지이므로, B+1개를 제거해도 그 파일의 그런디수에는 변화가 없다. 그리고 전체의 그런디수도 0을 유지하게 된다. 이 상태로 상대방에게 턴을 넘겨주게 되면, 이후에는 1~B만 사용해서 이길수 있다. 결국, m>B 이고 A>B인 경우에는 선공이 항상 승리할수 있다. * ABOJ ps:problems:boj:다이아몬드_5}}