牛牛爱博弈

牛牛爱博弈

https://ac.nowcoder.com/acm/problem/205086

题目

牛牛:我们来玩取石子游戏。一共有 颗石子,每个人每次可以取 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;
}
全部评论

相关推荐

头像
11-09 17:30
门头沟学院 Java
TYUT太摆金星:我也是,好几个华为的社招找我了
点赞 评论 收藏
分享
尊嘟假嘟点击就送:加v细说,问题很大
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务