Skip to content

anti-nim(反nim游戏) ​

反nim游戏。正常的nim游戏是取走最后一颗的人获胜,而反nim游戏是取走最后一颗的人输。

一个状态为必胜态,当且仅当:

1)所有堆的石子个数为1,且NIM_sum=0

2)至少有一堆的石子个数大于1,且 NIM_sum≠0

cpp
void solve(){
    int n;
    cin>>n;
    int ans=0;
    bool g=0;
    for(int i=1;i<=n;i++){
        int x;
        cin>>x;
        if(x>1)g=1;
        ans^=x;
    }
    if((g&&ans)||(!g&&!ans))cout<<"John\n";//必胜
    else cout<<"Brother\n";
}