lightoj 1296 - Again Stone Game 博弈论

思路:因为数据很大,先经过打表找规律能够知道,ide

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

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

代码以下:blog

 

 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
相关文章
相关标签/搜索