#include <cstdio> #include <cstring> #include <cmath> #include <map> #include <queue> #include <stack> #include <iostream> #include <algorithm> using namespace std; const int maxn=1010; int a; int main() { int n; while(cin>>n) { if(n==0)break; int i,ans=0; for(i=0;i<n;i++) { cin>>a; ans^=a; } if(ans==0)cout<<"Grass Win!"<<endl; else cout<<"Rabbit Win!"<<endl; } return 0; } /* 简单博弈(组合游戏) 用SG定理解,求得Nim和就OK了,和hdu 1850差不多 sg值先写个程序打表,找下规律,得出sg[i]=i; */
sg值打表:
#include <cstdio> #include <cstring> #include <cmath> #include <map> #include <queue> #include <stack> #include <iostream> #include <algorithm> using namespace std; const int maxn=1e3+10; int sg[maxn],vis[maxn]; void init() { int i,j; sg[0]=0; for(i=1;i<=100;i++) { memset(vis,0,sizeof(vis)); for(j=0;j<i;j++) vis[sg[j]]++; for(j=0;;j++) if(!vis[j]){sg[i]=j;break;} } for(i=1;i<=100;i++) cout<<sg[i]<<endl; } int main() { init(); }