これは
AMC2023
(Adventure Math Calendar2023)の5日目の記事です.4日目までの記事、とても面白いので読みましょう(読みましょう)
前編
では,不偏ゲームの勝敗を判定する方法や,Grundy数についてざーっと紹介しました.この記事では,こういったものがどのように問題に適用できるのかを見ていきたいと思います.
今回紹介する問はちょっと難しめです... 解法を理解するというよりは「そんな使い方できるんだー」程度に思ってもらえればいいと思います. 自分がうまく説明できる自信もないので
OMC133(E)
無数にある白紙のカードを使って,あなたはOMC君と次のゲームを行います.
【ルール】まず,ゲームマスターが次の一連の操作を回続けて行う.
- 以上以下の整数のうちつを任意に選ぶ.
これが回目の操作のとき,選ばれた数をとする. - 白紙のカードを枚とり,そこにを書き込む.
ただし,ゲームマスターはゲームの進行に中立な存在である.
その後,あなたとOMC君は交互に次の一連の操作を行う.OMC君が先攻である.
- 以上の整数が書かれたカードを枚選び,白紙に戻す.このとき書かれていた数をとおく.
- 次をともにみたす正整数を選ぶ.
- 白紙のカードを枚とり,それぞれにを書き込む.
先に操作を行えなくなった方がであり,もう一方が勝ちである.
両者が自身の勝ちのために最適に行動します.このとき,ゲームは有限回の操作で終了し,組ごとにあなたとOMC君のいずれが最終的に勝つかが定まります.通りある組のうち,あなたが最終的に勝つものは通りあります.
をで割った余りを求めて下さい.
例を出すと
というような感じです. 楽しそう
さて,まずこの問題は不偏ゲームです.なので漸化式かGrundy数を使いたいです.でも漸化式で解くのはとてつもない計算になるので,きっとGrundy数が使えるんだろうなと考えます.
では,この問題において「つ分のゲーム」はどれにしたら良いでしょうか.実は初期状態でのカード枚分をつ分にすると,(それらは関わりがないので)それらのGrundy数の排他的論理和で求めることができて,めでたしめでたしです.
以下では
のカード枚がある状態でのGrundy数
と定義します.
Grundy数の計算
ここが本質です.(え?) まず,となります.(操作できない状態はにすることに気を付けて)実験をすると,
(が成り立つことに気を付けます)
ここから次のように推測できます.
- が以上でで割った余りがなら?
- がの倍数なら?
- がまたは奇数なら?
これは実際にを使うと示すことができます.これを書くと公式解説の丸写しになってしまうので書きたくない 公式解説を見て下さい(人任せ)
最後にだったので,の中にの倍数も,以上ので割って余る数も偶数個含まれていればよく,この個数を求めると答えが出ます.
個数を求めるのは割と容易なのでスキップします.(ここが気になる人は「母関数」などでぐぐると分かりやすい記事がたくさんあります)
OMC051(F)
とし,の空でない部分集合に対しそのスコアを以下で定めます:
以下の条件をみたすの部分集合であって,そのスコアが最大になるものは一意に存在することが保証されます.その元の個数を素数で割った余りを求めてください.
- 任意のに対して,の十進法表記で各桁を比較すると,ちょうどヵ所が一致することはない.
ただし,上の条件においてが十進法表記で桁に満たない場合は,例えばならばのように,先頭にを適当に補うことで桁の数とみなして考えるものとします.
・のように,ちょうど桁が違うようなものが存在しないようにスコアを大きくするとき,要素数はいくつ?という問題です.
スコアの最大化はの要素を大きい順に選んでいけば良い(なので)ですが,以下ではで考えていきます.このように考えてもとすれば大小関係がひっくり返るので,問題ありません.
さて,この問題はゲームとは縁が無さそうですが,実は次のようなゲームを考えるとうまくいきます.
個の山があり,個目の山には個の石が積まれている.先手・後手はここから「つの山を選び,そこから個以上の石をとる」という操作を交互に行う.自分の番で石を個にしたらである.
両者が最適に行動するとき,どちらが勝つか?
これを解くのはGrundy数を使えば良いです.個石が積まれたつの山について,そのGrundy数はだと分かります.よって,なら先手必勝,そうでないなら後手必勝となります.
今度は漸化式を使ってみます.をに変えて数が小さいところから求めていきます.
...漸化式は「遷移できる状態が全てなら,があるなら」でした.これって元の問題と似ていませんか?
例えば,を集合に入れるには,のつがに含まれていないようにしなければなりません.つまり,遷移できる状態の数が全て「含まれていない→の状態」ならその数を入れて,遷移できる状態の数に「含まれている→の状態」があるならその数を除かなければいけません.よって,このゲームを解くことは元の問題を解くことと同じになります!
(大小関係を逆にした上で)ある要素がに含まれる上のゲームにおいて後手必勝
なので,上の第辺を満たす個数を求めれば良いです.(ちなみに個数には影響しませんが,大小関係を元に戻すとになります) 個数求めパートは""本質に比べれば""容易なのでここでもスキップします.
おわりに
前後編に分けた長い記事になりましたが,なんとか書ききれて良かったです.みんなでGrundy数を攻略しまくって不偏ゲームの問題が出なくなるようにしてやりましょう!
ここまで読んで頂きありがとうございました~!