#A903. 取石子游戏

取石子游戏

问题描述

取石子游戏是一种经典的博弈游戏,通常由两个人轮流进行。‌在游戏过程中,玩家可以选择取走 1x1\sim x 颗石子。游戏的最终目标是把所有石子全部取完,最后取完石子的一方获胜(无法取石子的失败)。‌

光头强会与你玩 TT 轮游戏,每次最多取 xx 个,每轮开始的时候会告诉你一个数字 nn 表示石头总数。你需要告诉他你想先手还是后手。

0 表示你选择先手,1 表示你选择后手。

之后光头强会按照你选择的先后手与你玩游戏。

如果你选择先手,此时你应当立即输出一个数,表示你取的石子数,然后光头强也会取一个数,并告诉你,如此反复。 反之亦然。

如果光头强无石子可取,他会认输,并向你输出 -1。之后开启下一轮游戏。如果光头强获胜了,他会直接嘲讽你并结束游戏。

你的目标是在每一轮都击败光头强!

询问方式

第一行光头强会给出一个整数 TT,表示游戏的总轮次。

询问方式如前面所述。首先由光头强给出石子总数 nn

由你选择先手还是后手。之后按照先后顺序依次取石子。

系统输出

第一行是一个整数 T(1T1000)T(1≤T≤1000),表示测试数据的组数。每组测试数据,系统首先输出两个整数 n(1n106)n(1≤n≤10^6)x(1x100)x(1≤x≤100),表示该组测试数据的石子数和每次最多能取几个,然后你可以按规定进行交互。

依照你选定的个先后顺序,系统会在合适的时候给出他的选择。

数据保证单个测试点有 n106\sum n≤10^6

样例

3

4 1
1
1
-1

4 4
-1

7 2
2
1
-1
1
1
1

0
4

0
2
1
1

样例说明

注意,上述空行是为了展示方便,实际系统输出并没有。后台采取忽略空格和空行的读取方式,你也不需要输出空行。

Case1:每次只能拿1个。

  • 选择后手,会拿到最后一个。

Case2:可以一次拿完。

  • 选择先手,一次拿完。

Case3:抽象版光头强,配合你演戏。

  • 仅作为输入输出规则展示,后台的光头强会更聪明一些。

注意事项。

如果使用带缓冲的输出,务必进行flush,否则可能导致后台交互器不能即时读取到数据导致超时。

为方便调试,如果你申请了不合法的数字或者输掉了游戏,系统会输出 -2,因此如果你读取到 -2,说明是已经失败了,你可以直接结束程序以获取错误信息,否则后续交互可能会因为无法进行导致RE,从而无法获取错误信息。