AtCoder Regular Contest 046 B : 石取り大作戦

arc046.contest.atcoder.jp

解法とその道のり

どこかで見たことある問題だぞ・・・。

arukuka.hatenablog.com

でもそのときとは違って、変なルールがないし、
とる数がそれぞれ違うこともあり、
その数なんと10^9

せっかく分けられているので、分けて考える。

A = B

まず、残りの数がA + 1で回ってきたら負け確定というのが分かる。
また、残りの数がA以下で回ってきたら勝利になる。

これを紙に書いてみると、(A+1)のループになっている。
相手を負かす手がどこまで伸びるかを考えてもいい。
なので、(n-1) % (A + 1) < Aか判定して、
そうだったら勝ち、違ったら負けとなる。

A != B

どう考えても大きいほうが有利では? → 1つだけWA

Aのほうが小さくても、N <= Aだったら勝てるので、特殊化。

AC。

Submission #958438 - AtCoder Regular Contest 046 | AtCoder


嘘解法生やして無限にWAしたので気を付けたい・・・。
でもあきらめないで自力で解けたのはうれしい。