题目描述
牛牛和牛妹玩博弈游戏。
牛牛:我们来玩取石子游戏。一共有n堆石子,每个人每次可以取1或2颗石子,谁取走了最后一颗石子就算谁获胜。
牛妹:这游戏太无聊了。
牛牛:那改一改。一共有n堆石子,每个人每次可以取1,2,4,8,…2k2^k2k颗石子,谁取走了最后一颗石子就算谁获胜。
牛妹:好的,你先开始取吧。
牛牛心里知道自己是否有必胜策略,但他想来考考你。
因为牛牛和牛妹很爱玩这种游戏,所以本题有多组数据。
(注:牛牛叫Alan\color{grey}{Alan}Alan,牛妹叫Frame\color{black}{F}\color{red}{rame}Frame.)
输入描述:
第一行,输入数据组数T。
接下来T行,每行一个数n。
输出描述:
对于每一组数据,
如果牛牛必胜,则输出“Alan”(不含引号);
如果牛妹胜,则输出“Frame”(不含引号)。
(PS:牛牛叫 Alan ,牛妹叫 Frame )
示例1
输入
3
1
2
3
输出
Alan
Alan
Frame
说明
当n=1时,牛牛直接取1颗石子即可获胜。
当n=2时,牛牛直接取2颗石子即可获胜。
当n=3时,显然牛牛论怎么取,牛妹都可以获胜。
示例2
输入
3
17
18
19
输出
Alan
Frame
Alan
备注:
数据保证1≤T≤1000,1≤n≤2×1091\le T\le 1000,1\le n\le 2\times 10^91≤T≤1000,1≤n≤2×109
这个题假如就是1与2,那么也就是说这个数如果是3的倍数牛妹就会赢,而
2
k
2^k
2k也是这样,如果能被3整除,就是牛妹赢,否则牛牛赢
代码:
#include<bits/stdc++.h>
#pragma GCC optimize(3)
using namespace std;
int t;
int main() {
scanf("%d",&t);
while(t--)
{
int n;
scanf("%d",&n);
if(n%3==0)
printf("Frame\n");
else
printf("Alan\n");
}
return 0;
}