1,假设没有k进行分析 —> 0是个必败点,3也是一个必败点(1,2/2,1);推广就可以知道只要是3的倍数就是必败点;
2,有k 分为两种情况:
(1)k%3 = 1和 k%3 = 2的情况,和走1,2步的一样,只是多了几倍的3,都是必败点还是和不存在k的情况一样的
(2)k%3 == 0的情况,
当下标比k小的时候,就回到了不存在k的情况,
下标大于等于k的时候,首先在下标等于k时,不是必败点,
下标为k+1时,如果走一步,那么就到了下标k,对手只要走k步就赢了,反过来当我们走k步,对手走一步也可以赢,
我们走2步时,因为我们的k是3的倍数,而在k以内的下标为3的倍数都是必败点,我们在k+1的下标往前走了2步所以,此时下标%3==2,所以k+1也是一个必败点,当下标为必败点时加上k+1也属于必败点,所以我们直接n%k+1,就可以把局面缩小到k以下,而k以下就相当不存在k(除了在k的时候不是必败点)
//假设没有k,必败点加必败点为必败点
signed main()
{
int T;cin>>T;
while(T--)
{
int n,k;cin>>n>>k;
if(k%3==0)n%=(k+1);
if(n%3==0&&n!=k) cout<<"Bob\n";
else cout<<"Alice\n"<<endl;
}
return 0;
}