地址:
点击打开链接
依旧是一个模板题,只不过需要转换一下就可以了
代码如下
#include<iostream> #include<cstdio> #include<string.h> #include<stack> #include<queue> #include<queue> using namespace std ; #define MAX 1001 int f[MAX]; int sg[MAX]; int Hash[MAX]; void getSG(int n ) { int i ,j ; memset(sg,0,sizeof(sg)); for(i = 1 ; i <=MAX ; i++) { memset(Hash,0,sizeof(Hash)); for(j = 1 ; f[j]<=i;j++) { Hash[sg[i-f[j]]]=1; } for(j = 0 ; j<=n ; j ++) { if(Hash[j]==0) { sg[i]=j; break ; } } } } int main() { int i ,m, n , p ,num,a,b; for(i=1 ; i <MAX ; i++) { f[i]=i; } getSG(MAX); while(scanf("%d",&num)!=EOF&&num) { int res ; if(num==1) { scanf("%d",&a); res = sg[a]; }else { scanf("%d%d",&a,&b); res = sg[a]^sg[b]; } for(i=3 ; i <=num ; i ++) { scanf("%d",&n); res = res^sg[n]; } if(res) { printf("Rabbit Win!\n"); }else { printf("Grass Win!\n"); } } }