atcoder#ABC212H. [ABC212H] Nim Counting
[ABC212H] Nim Counting
配点 : 点
問題文
正の整数 , と長さ の整数列 が与えられます。
高橋君と青木君が石取りゲームをすることを考えます。最初、山がいくつかあり、それぞれの山には 個以上の石があります。 高橋君から始めて 人は交互に以下の操作を繰り返します。
- 石が つ以上残っているような山を つ選ぶ。 選んだ山に 個の石があるとき、 個以上 個以下の任意の個数の石をその山から取り除く。
先に操作ができなくなったプレイヤーが負けとなります。
さて、ゲームを始める前の初期状態として次のようなものを考えます。
- 山の個数を としたとき、 をみたす。
- 各山にある石の個数は のいずれかである。
山の順番を並び替えて一致するものも区別するとしたとき、これをみたす初期状態として考えられるものは 通りあります。このうち、 人が自分が勝つために最適な行動をしたとき、高橋君が勝てるような初期状態の個数を で割ったあまりを求めてください。
制約
- は全て相異なる。
- 入力は全て整数である。
入力
入力は以下の形式で標準入力から与えられる。
出力
答えを出力せよ。
2 2
1 2
4
最初の状態における各山の石の個数として考えられるのは , , , , , の 通りです。 これらのうち、 , , , の 通りについては高橋君に必勝法が存在し、残りの 通りについては青木君に必勝法が存在します。よって、 を出力します。
100 3
3 5 7
112184936
で割った余りを求めることに注意してください。