No.257 N言っちゃダメゲーム (3)

レベル : / 実行時間制限 : 1ケース 2.000秒 / メモリ制限 : 512 MB / リアクティブ問題 (詳しくはこちら
タグ : / 解いたユーザー数 156
作問者 : yuki2006yuki2006
2 ProblemId : 708 / 出題時の順位表

Note

2019/06/08 WAになるジャッジを正しく判定できてませんでした。ジャッジを修正し、リジャッジ致しました。

問題文

あなたとGrantは、いわゆる「$21$言っちゃダメゲーム(棒取りゲームというところも)」をすることにした。

ルールを拡張して正整数 $N$ と $K$ を使って以下のゲームを考える。

1. まず先攻のプレイヤーは $0$ が与えられる。
2. そこから $N$ 以上を宣言しないように(宣言したら負けになる)与えられた整数に $1$~$K$ のどれかの整数を加算したものを宣言し相手プレイヤーに渡す。
3. 勝負がつくまで代わり代わりに 2. を繰り返す。

実際にGrantと対戦し勝利してください。

最初に$N$,$K$ が与えられ、
あなたは、先攻後攻どちらかを自由に選べる。

時間の都合上、相手は、5ターン連続で勝てる見込みがないと判断すると諦めることになっている。
相手が諦めた場合、ゲームの状態には関係なく$N$以上($N+K$以下の数)が宣言される。これは相手が諦めたものであると解釈し、あなたの勝ちとし、プログラムを終了すること

入出力

最初の一行を読み込むと、ゲームの$N$,$K$の値が得られる。
$N$ $K$

$N$,$K$は整数で与えられる。
$1\le N \le 10^{8}$
$1\le K \le 10^{8}$

続いて、後攻を選択する場合のみ
0
を出力してください。
先攻の場合、何もしなくてよい。

自分のターンの時に、宣言する整数を1つ出力してください。
A
これ以外の形式、ゲームのルールに違反する整数を宣言した場合の結果は、不定となる。

相手のターンの時は、相手の宣言した整数を標準入力として読み込む。形式は1つの整数である。ゲームのルール上あり得る整数値が渡される。
B
入力を読み込むと、自分のターンになり上記の繰り返しとする。
この時に、$N$以上の入力を読み込んだとき、ただちにプログラムを終了してください。

各出力は、行末に改行してください。
各出力後に、出力をflushしてください。
flushしなかった場合、応答プログラムが入力を処理できず制限時間を超えてしまい、その結果不正解となることがある。
ゲーム終了後プログラムをただちに終了すること。ジャッジの制限時間を超えた結果として不正解となることがある。
相手に勝利した場合、正解とする。

注意点

  • ジャッジの制限時間は応答プログラムの反応時間も含めている。
  • 標準エラー出力への出力は不正な出力とみなされない。
  • ジャッジ側のコードが先に終了し、その後で入力を読み込むとTLE/ランタイムエラーなどになる場合があることに注意。

サンプル

この入出力通りに動作することが保証されるものではない。
入力のサンプルは以下である。 
21 3
2
5
8
12
17
19
22
出力のサンプルは以下である。
0
4
7
10
14
18
20
入力の1行目で$N=21$,$K=3$が渡される。
出力の1行目が0なのであなたは後攻を選択した。
入力の2行目が2なので相手は2を宣言した。
出力の2行目が4なのであなたは4を宣言した。
・・・・
入力の8行目が22で、21以上の数値なので、相手の負けである。
相手が$N$以上の整数を出力した際に、プログラムを終了してください。
提出ページヘ
下のフォームでの入力は、テキストボックスにフォーカスがない場合は、(Onにしている場合)ショートカットキー・スマートサブミットの影響を受けるので、必要なら提出ページに遷移してください。

言語
問題によって提出できない言語があります。参考
ソースコード
ソースコードのテキストボックスに文字がある場合はファイルは無視されます。
テキストボックスで提出するとCR(\r)が除去されますが、ファイルで提出すると除去されません。