给出N只老鼠,两种杀法:1,一次杀一只;2,奇数的话就杀(n-1)/2只,偶数的话就杀n/2只。
Alice和Bob轮流进行,Alice kill first。谁杀完最后一只老鼠者胜。
第一次见这样的博弈,其实是要用模拟的思想再加上博弈的思想。
#include"iostream"
using namespace std;
int main()
{
int t;
cin>>t;
while(t--)
{
int n;
cin>>n;
if(n==1)
{
cout<<"Alice"<<endl;
continue;
}
if(n==2)
{
cout<<"Bob"<<endl;
continue;
}
if(!(n&1))
{
cout<<"Alice"<<endl;
continue;
}
int count=0;
while(n&1)
{
count++;
n=(n+1)/2;
}
if(n==2)
{
if(count&1)
cout<<"Alice"<<endl;
else cout<<"Bob"<<endl;
}
else
{
if(count&1)
cout<<"Bob"<<endl;
else cout<<"Alice"<<endl;
}
}
return 0;
}