lightoj 1296 - Again Stone Game 博弈论

思路:由于数据很大,先通过打表找规律可以知道,

当n为偶数的时候其SG值为n/2;

当n为奇数的时候一直除2,直到为偶数m,则SG值为m/2;

代码如下:

 

 1 #include<stdio.h>

 2 int cal(int m)

 3 {

 4     while(m&1) m>>=1;

 5     return m>>1;

 6 }

 7 int main()

 8 {

 9     int t,n,ca=0,a;

10     scanf("%d",&t);

11     while(t--){

12         scanf("%d",&n);

13         int ans=0;

14         for(int i=0;i<n;i++){

15             scanf("%d",&a);

16             ans^=cal(a);

17         }

18         printf("Case %d: %s\n",++ca,ans?"Alice":"Bob");

19     }

20     return 0;

21 }
View Code

 

 

 

你可能感兴趣的:(game)