题目
牛牛:我们来玩取石子游戏。一共有 颗石子,每个人每次可以取 1 或 2 颗石子,谁取走了最后一颗石子就算谁获胜。
牛妹:这游戏太无聊了。
牛牛:那改一改。一共有 颗石子,每个人每次可以取
颗石子,谁取走了最后一颗石子就算谁获胜。
牛妹:好的,你先开始取吧。
牛牛心里知道自己是否有必胜策略,但他想来考考你。
因为牛牛和牛妹很爱玩这种游戏,所以本题有多组数据。
(注:牛牛叫 Alan,牛妹叫 Frame。)
解题思路
如果只剩下 3 颗石子,那么谁先手,就谁输。
如果 是 3 的倍数,那么 Alan 不可能取完所有石子,因为 3 不可能整除
。
这时,Frame 可以取 1 颗或 2 颗石子,让剩下的石子数恢复成 3 的倍数,直至只剩下 1 颗或 2 颗石子,Frame 赢。
如果 不是 3 的倍数,那么 Alan 每次可以取 1 颗或 2 颗石子,使剩下的石子数目是 3 的倍数,直至取完,Alan 赢。
C++代码
#include<iostream>
using namespace std;
int main(){
int T, n;
cin >> T;
while(T--){
cin >> n;
if(n%3)
cout << "Alan" << endl;
else
cout << "Frame" <<endl;
}
return 0;
} 
京公网安备 11010502036488号