编程题
硬币游戏 ### 题目描述 Alice 和 Bob 现在在玩的游戏,主角是依次编号为 $1$ 到 $n$ 的 $n$ 枚硬币。每一枚硬币都有两面,我们分别称之为正面和反面。一开始的时候,有些硬币是正面向上的,有些是反面朝上的。Alice 和 Bob 将轮流对这些硬币进行翻转操作,且 Alice 总是先手。 具体来说每次玩家可以选择一枚编号为 $x$,要求这枚硬币此刻是反面朝上的。对于编号 $x$ 来说,我们总可以将 $x$ 写成 $\cdot 2^a \cdot 3^b$ ,其中 $a$ 和 $b$ 是非负整数,$c$ 是与 $2$,$3$ 都互质的非负整数,然后有两种选择: 选择整数 $p$,$q$ 满足 $a \ge pq , p \ge 1$ 且 $1 \leq q \leq \text{MAXQ}$,然后同时翻转所有编号为 $c \cdot 2^{a-pj} \cdot 3^b$ 的硬币,其中 $j = 0, 1, 2, \ldots q$。 选择整数 $p$,$q$ 满足 $b \geq pq, p \ge 1$ 且 $1 \leq q \leq \text{MAXQ}$,然后同时翻转所有编号为 $c \cdot 2^a \cdot 3^{b-pj}c$ 的硬币,其中$j = 0, 1, 2, \ldots q$。 可以发现这个游戏不能无限进行下去,当某位玩家无法继续操作上述操作时,便输掉了游戏。作为先手的 Alice,总是希望可以在比赛开始之前就知道自己能否获胜。她知道自己和 Bob 都是充分聪明的,所以在游戏过程中,两人都会最优化自己的策略并尽量保证自己处于不败的情形中。 ### 输入描述 本题有多组测试数据,第一行输入一个整数 $T$,表示总的数据组数。之后给出 $T$ 组数据。 每组数据第一行输入两个整数 $n,MAXQ$。 第二行输入 $n$ 个整数,第 $i$ 个数表示第 $i$ 个硬币的初始状态,$0$ 表示反面朝上,$1$ 表示正面朝上。 其中,$1\le n \le 30000,1 \le MAXQ \le 20,t\le 100$。 ### 输出描述 输出共有 $t$ 行。对于每一组数据来说,如果 Alice 先手必胜,则输出 `win`,否则输出 `lose`。 ### 输入输出样例 #### 示例 1 >输入 ```txt 6 16 14 1 0 0 1 0 0 0 0 1 0 0 0 1 0 1 1 16 14 0 1 0 0 0 1 1 1 1 1 1 0 1 0 0 1 16 11 0 1 0 0 0 1 1 1 0 1 0 0 0 1 0 1 16 12 1 1 1 1 1 1 1 1 0 0 1 1 0 1 1 0 16 4 1 0 0 1 0 0 1 0 0 0 0 1 0 1 1 0 16 20 0 0 0 0 1 0 1 0 0 0 1 0 0 1 0 0 ``` >输出 ```txt win lose win lose win win ```
查看答案
赣ICP备20007335号-2