题意:有n个石头,一次一个人只能拿一块或者两块,如果Alice先开始拿,那么拿最后一块石头的人输,如果Bob先开始拿,那么拿最后一块石头的人赢。给出石头的个数和谁先开始拿,问谁能赢。
思路:如果Bob先拿,则只要石头数是3的倍数就是Alice赢;如果Alice先拿,则只要是石头数-1是3的倍数就是Bob赢。
#include <bits/stdc++.h>
using namespace std;
int main(void)
{
int T, cas=1;
scanf("%d", &T);
while (T--)
{
int n;
string s;
cin>>n>>s;
cout<<"Case "<<cas++<<": ";
if (s=="Alice")
{
n--;
cout<<(n%3!=0?"Alice":"Bob")<<endl;
}
else
{
cout<<(n%3!=0?"Bob":"Alice")<<endl;
}
}
return 0;
}