有一天,小A和小B玩了一个神奇的游戏,游戏开始时,桌面上有a0个不同盒子和b0个不同的物品,每个回合,两个人可以选择增加一个新的盒子或者一个新的物品(所有物品和盒子都不同),记当前桌子上的盒子数量为a,物品数量为b,当把b个物品放入a个盒子的方案数不小于n时,游戏结束,此时最后一位操作者判负。
给出a0,b0,n,如果小A先手,两个人都采用最优策略,谁能获胜,如果A获胜输出“A”,如果B获胜,输出“B”,如果是平局,输出“A&B”。
有一天,小A和小B玩了一个神奇的游戏,游戏开始时,桌面上有a0个不同盒子和b0个不同的物品,每个回合,两个人可以选择增加一个新的盒子或者一个新的物品(所有物品和盒子都不同),记当前桌子上的盒子数量为a,物品数量为b,当把b个物品放入a个盒子的方案数不小于n时,游戏结束,此时最后一位操作者判负。
给出a0,b0,n,如果小A先手,两个人都采用最优策略,谁能获胜,如果A获胜输出“A”,如果B获胜,输出“B”,如果是平局,输出“A&B”。
输入第一行是一个数据组数T(T<=10)。
接下来T行,每行描述一个测试数据,包含三个整数a0,b0,n(1<=a0<=10000,1<=b0<=30,2<=n<=10^9)。分别表示桌子上初始的盒子数,球数和n值。
对于每个测试数据,输出一行,仅包含一个字符串,即“A”,“B”或“A&B”。
3 2 2 10 3 1 4 1 4 10
B A A&B
N=int(input()) import math def cal(box,goods): return math.pow(box,goods) for i in range(N): a,b,n=list(map(int,input().split())) if cal(a,b)>=n: print("B") break temp=cal(a,b) order=["A","B"] i=0 while True: c1=cal(a+1,b) c2=cal(a,b+1) if c1<n and c2<n: if c1>c2: temp=c1 a+=1 else: temp=c2 b+=1 elif c1>=n and c2<n: if temp==c2: print("A&B") break temp=c2 b+=1 elif c2>=n and c1<n: if temp==c1: print("A&B") break temp=c1 a+=1 else: print(order[i%2]) break i+=1
import sys import math try: while True: t = sys.stdin.readline().strip() if t == '': break for _ in range(int(t)): a,b,n = [ int(i) for i in sys.stdin.readline().strip().split()] if a==1 and pow(2,b)>=n: print 'A&B' else: def dfs(a,b,n,flag): if a==1 and pow(a+1,b)<n: tt = dfs(a+1,b,n,flag+1) if tt == 'A': return 'A' else: return 'B' temp1 = pow(a+1,b) temp2 = pow(a,b+1) if temp1 >= n: if temp2 >= n: return 'B' if flag%2 else 'A' else: maxB = int(math.log(n,a))-b if math.log(n,a)%1==0: maxB += 1 return 'B' if (maxB+flag)%2 else 'A' elif temp2 >= n: maxA = int(pow(n,1.0/b))-a if pow(n,1.0/b)%1 == 0: maxA += 1 return 'B' if (maxA+flag)%2 else 'A' else: addA = dfs(a+1,b,n,flag+1) addB = dfs(a,b+1,n,flag+1) if flag%2 == 0 and addA == 'A' or addB == 'A': return 'A' elif flag%2 == 1 and addA == 'B' or addB == 'B': return 'B' else: if flag%2: return 'B' else: return 'A' print dfs(a,b,n,0) except: pass