#A903. 取石子游戏
取石子游戏
问题描述
取石子游戏是一种经典的博弈游戏,通常由两个人轮流进行。在游戏过程中,玩家可以选择取走 颗石子。游戏的最终目标是把所有石子全部取完,最后取完石子的一方获胜(无法取石子的失败)。
光头强会与你玩 轮游戏,每次最多取 个,每轮开始的时候会告诉你一个数字 表示石头总数。你需要告诉他你想先手还是后手。
0
表示你选择先手,1
表示你选择后手。
之后光头强会按照你选择的先后手与你玩游戏。
如果你选择先手,此时你应当立即输出一个数,表示你取的石子数,然后光头强也会取一个数,并告诉你,如此反复。 反之亦然。
如果光头强无石子可取,他会认输,并向你输出 -1
。之后开启下一轮游戏。如果光头强获胜了,他会直接嘲讽你并结束游戏。
你的目标是在每一轮都击败光头强!
询问方式
第一行光头强会给出一个整数 ,表示游戏的总轮次。
询问方式如前面所述。首先由光头强给出石子总数 。
由你选择先手还是后手。之后按照先后顺序依次取石子。
系统输出
第一行是一个整数 ,表示测试数据的组数。每组测试数据,系统首先输出两个整数 ,,表示该组测试数据的石子数和每次最多能取几个,然后你可以按规定进行交互。
依照你选定的个先后顺序,系统会在合适的时候给出他的选择。
数据保证单个测试点有 。
样例
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,从而无法获取错误信息。