PKU2975
/* Nim游戏,首先求出sg异或和的值。 如果是胜,判断每堆石块通过变化个数能够达到败态。计数就可以了 */ #include <cstdio> int N,A[1010],ans; int main() { while(scanf("%d",&N)==1) { if(!N) break; ans = 0; for(int i=0;i<N;i++) { scanf("%d",&A[i]);ans^=A[i]; } int cnt=0; if(ans) for(int i=0;i<N;i++) { if( A[i]>= (ans^A[i])) cnt++; } printf("%d\n",cnt); } return 0; }