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

 

 

 

posted @ 2013-10-12 12:32  _随心所欲_  阅读(414)  评论(0编辑  收藏  举报