题意要求除了对输赢的判断,还有对第一次取法的计数。所以先要对状态做判断,至于取法则是要看每堆扑克牌与异或结果最高位对应的位上是否为1.
1 #include <algorithm> 2 #include <iostream> 3 #include <iomanip> 4 #include <cstring> 5 #include <cstdlib> 6 #include <climits> 7 #include <sstream> 8 #include <fstream> 9 #include <cstdio> 10 #include <string> 11 #include <vector> 12 #include <queue> 13 #include <cmath> 14 #include <stack> 15 #include <map> 16 #include <set> 17 18 using namespace std; 19 int main() 20 { 21 int m,ans,a[200],i,p,count; 22 while(scanf("%d",&m)!=EOF&&m) 23 { 24 ans=0; 25 for(i=0;i<m;i++) 26 { 27 scanf("%d",&a[i]); 28 ans^=a[i]; 29 } 30 if(!ans) 31 { 32 printf("0\n"); 33 continue; 34 } 35 p=0; 36 while(ans>1) 37 { 38 ans>>=1;p++; 39 } 40 count=0; 41 for(i=0;i<m;i++) 42 { 43 if((a[i]>>p)&1) 44 count++; 45 } 46 printf("%d\n",count); 47 } 48 return 0; 49 }