#P8887. [DMOI-R1] 柯基棋

[DMOI-R1] 柯基棋

题目背景

小 A 和小 B 都是爱狗人士,且绝顶聪明,尤其喜爱柯基,于是他们发明了“柯基棋”。

题目描述

小 A 和小 B 在一个 n×nn \times n 的棋盘内轮流下棋。小 A 先手,小 B 后手。设当前有一只“柯基”被下在了棋盘的 (x,y)(x,y) 处,那么棋盘内的 (x1,y1)(x-1,y-1)(x1,y+1)(x-1,y+1)(x+1,y1)(x+1,y-1)(x+1,y+1)(x+1,y+1) 处都会变为这只“柯基”的地盘,也就不能再放一只“柯基”。当一个人不能再放下一只“柯基”时,他就输了。

可惜,小 C 却不怎么喜欢柯基,所以他很反对小 A 和小 B 玩“柯基”棋,于是他非常喜欢捣乱棋局。当小 A 和小 B 一共下了 xix_i 只“柯基”时,小 C 就会以当前 w×ww \times w 棋盘的中心为中心,扩大棋盘为 (w+2)×(w+2)(w+2) \times (w+2),他一共会捣乱 qq 次。

而你的任务是要判断这局棋是小 A 赢还是小 B 赢,如果小 A 赢,输出 A won,否则输出 B won

由于他们两个人比较贪玩,所以他们一共会玩 TT 局。

注意

  1. 当小 A 和小 B 已经将原来的棋盘下到不能再下时,他们会直接跳转到小 C 下一次的捣乱(如果有)。

  2. 小 A 和小 B 知道小 C 会捣乱,且会按照自己的最优策略走。

由于数据过大,xix_i 由数据随机生成器给出。

输入格式

第一行一个正整数 TT,表示 TT 组数据。

每组数据一行三个正整数 n,q,seedn,q,seed,其中 seedseed 的作用见提示说明。

输出格式

TT 行,每一行输出一个字符串 A wonB won

3
2 5 493
3 8 3219
8 4 1294
B won
A won
B won

提示

随机数据生成器

每一轮游戏的 xix_i 由下方的生成器给出:

unsigned long long x[10000005];
unsigned long long xor_shift(unsigned long long &seed){
  return seed^=seed>>12, seed^=seed<<25, seed^=seed>>27, seed*0x2545F4914F6CDD1D;
}
int main(){
  //your code here
  int n,q;
  unsigned long long seed;
  cin>>n>>q>>seed;
  for(int i=1;i<=q;i++){
	x[i]=x[i-1]+((xor_shift(seed)%(unsigned long long)(2*2)+1))*2;
  }
  //your code here
  return 0;
}

样例解释

对于第一局游戏,xix_i 数组如下:6 8 16 18 22

对于第二局游戏,xix_i 数组如下:8 14 16 24 32 36 38 40

对于第三局游戏,xix_i 数组如下:4 8 10 16

数据范围

对于 20%20\% 的数据,n,q100n,q\leq100

对于 50%50\% 的数据,n,q10000n,q\leq10000

对于 100%100\% 的数据,1T10,2n,q,q1071 \le T \le 10,2\leq n,q,\sum q \leq 10^7,$x_i \equiv 0 \pmod 2\ (i\in[1,q]),0 \le seed \le 10^7$。