题目链接:
http://acm.bnu.edu.cn/v3/problem_show.php?pid=13215
-------------------------
这两天在刘汝佳的书里看到了这道题,规律为sg(n)=n/2 (n为偶数),sg(n)=sg(n/2) (n为奇数)。
-------------------------
打表列出SG函数然后找规律。然后找了半小时都没找出规律......T_________________T
果然博弈对归纳规律的能力也是要求很高啊.
规律:
n为奇数时,n一直除以2,直到除直到得到偶数m,sg[n] = m / 2 ;
n为偶数时,sg [n] = n / 2;
代码:
#include <stdio.h>
#define sc scanf
int main()
{
int i,x,n,cas=0,T,sum;
sc("%d",&T);
while(T--)
{
sum=0;
sc("%d",&n);
for(i=0;i<n;++i)
{
sc("%d",&x);
while(x&1) x/=2;
sum^=x/2;
}
printf("Case %d: ",++cas);
puts(sum?"Alice":"Bob");
}
return 0;
}