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の場合(先手が一手目で勝利する場合)のみ先手の勝ち

以上の解法を導くために,愚直解のコードを書いてしまった…