牛牛爱博弈

牛牛爱字符串

https://ac.nowcoder.com/acm/contest/6885/A

链接:https://ac.nowcoder.com/acm/contest/6885/C

时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 262144K,其他语言524288K
64bit IO Format: %lld

题目描述

牛牛和牛妹玩博弈游戏。
牛牛:我们来玩取石子游戏。一共有n堆石子,每个人每次可以取1或2颗石子,谁取走了最后一颗石子就算谁获胜。
牛妹:这游戏太无聊了。
牛牛:那改一改。一共有n堆石子,每个人每次可以取1,2,4,8,...2^k颗石子,谁取走了最后一颗石子就算谁获胜。
牛妹:好的,你先开始取吧。
牛牛心里知道自己是否有必胜策略,但他想来考考你。
因为牛牛和牛妹很爱玩这种游戏,所以本题有多组数据。

输入描述:

第一行,输入数据组数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


思路

观察易得如果目前石子是3或者3的倍速,那么先手不可能取完
那么后手只需要取1或者2颗使石子一直保持3的倍数,直到只剩下1或2颗
此时后手获胜
所以,只要n是3的倍数则Frame获胜
否则Alan获胜


#include<iostream>
#include<cmath>
using namespace std;
int main(){
    int t;
    cin>>t;
    while(t--){
        int n;
        cin>>n;
        if(n%3==0){
            cout<<"Frame"<<endl;
        }
        else{
            cout<<"Alan"<<endl;
        }
    }
}
全部评论

相关推荐

CrazyBucket:我今天下午也做梦在招聘会上面试一家小厂,给自己气笑了
点赞 评论 收藏
分享
11-01 20:03
已编辑
门头沟学院 算法工程师
Amazarashi66:这种也是幸存者偏差了,拿不到这个价的才是大多数
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务