AtCoder Regular Contest 46 B - 石取り大作戦
※このエントリは競プロで圧倒的成長 Advent Calendar 2015の13日目のエントリです.
問題概要
- N個の石があり,先手と後手,交互に石を取っていく
- 先手は1個からA個,後手は1個からB個の石を取る
- 最後の石を取った人が勝ち
部分点解法
- A=Bの時は普通に石取りゲーム
- ググればたくさん出てくるけど結論だけ書くと
- N % (A+1) != 0の時,先手の勝ち
- N % (A+1) == 0の時,後手の勝ち
満点解法
- 基本的には取れる数が多いほうが勝利する
- A<Bに置いて,N<=Aの場合(先手が一手目で勝利する場合)のみ先手の勝ち
以上の解法を導くために,愚直解のコードを書いてしまった…