HDOJ3032 Nim or not Nim? (sg打表)

来源:互联网 发布:网络培训教学反思 编辑:程序博客网 时间:2024/05/08 09:14

题意:题意:规则和nim博弈取n堆石子一样,n堆石子,游戏双方每次可以取某一堆的任意个,不可以不取,还可以把一堆分成两堆,最后没办法操作的一方为输家!

题解:Lasker's Nim游戏,通过打表可以发现规律

#include<iostream>#include<cstdio>#include<cstring>#include<cstdlib>using namespace std;int main(){    //freopen("input.txt","r",stdin);    int t,n;    scanf("%d",&t);    while(t--){        scanf("%d",&n);        int ans=0,x;        for(int i=0;i<n;i++){            scanf("%d",&x);            if(x%4==0)                ans^=(x-1);            else if(x%4==1 || x%4==2)                ans^=x;            else                ans^=(x+1);        }        if(ans!=0)            puts("Alice");        else            puts("Bob");    }    return 0;}

0 0