题目链接: UVA12293
题意:https://cn.vjudge.net/problem/UVA-12293#author=2017wph
对于那一个少球的盒子其实不用太多去考虑,只需要控制最多球的那个盒子,对于这个多球的,只要把它的数量控制在尽量多就行了,也就是(n+1)/2 到n-1个,然后SG函数找找规律就行了
规律是2^i-1
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
const int maxn=1010;
bool vis[maxn];
int SG[maxn];
/*
void getSG(int x)
{
for(int i=1;i<=x;i++)
{
memset(vis,false,sizeof(vis));
for(int j=(i+1)/2;j<i;j++)
{
vis[SG[j]]=true;
}
for(int j=0;;j++)
{
if(!vis[j])
{
SG[i]=j;
break;
}
}
}
return;
}
*/
int main()
{
/*
getSG(1000);
for(int i=1;i<=50;i++)
{
printf("%3d",SG[i]);
if(i%5==0) puts("");
}
*/
//freopen("in.txt","r",stdin);
int n;
while(~scanf("%d",&n))
{
if(n==0) break;
bool flag=false;
for(int i=1;i<32;i++)
{
if(n==(1<<i)-1)
{
flag=true;
break;
}
}
if(flag) puts("Bob");
else puts("Alice");
}
return 0;
}