//求三堆石子的SG函数,异或起来就是整个游戏的SG值
#include <cstdio>
#include <cstring>
const int N=1005;
int n,m,p,cnt,F[N],sg[N+2];
bool vis[N+2];
void Init()
{
F[0]=F[1]=1;
for(cnt=2; F[cnt-1]<N*2; ++cnt) F[cnt]=F[cnt-2]+F[cnt-1];
for(int i=1; i<N; ++i)
{
memset(vis,0,sizeof vis);
for(int j=1; F[j]<=i; ++j)
vis[sg[i-F[j]]]=1;//所有后继的sg值的mex
for(int j=0; ; ++j)
if(!vis[j]) {sg[i]=j; break;}
}
}
int main()
{
Init();
while(scanf("%d%d%d",&n,&m,&p),n&&m&&p)
puts(sg[n]^sg[m]^sg[p]?"Fibo":"Nacci");
return 0;
}
HDU.1848.Fibonacci again and again(博弈论 Nim)
Posted SovietPower
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HDU.1848.Fibonacci again and again(博弈论 Nim)相关的知识,希望对你有一定的参考价值。
以上是关于HDU.1848.Fibonacci again and again(博弈论 Nim)的主要内容,如果未能解决你的问题,请参考以下文章
HDU 1848 Fibonacci again and again
HDU1848 Fibonacci again and again(SG函数)
hdu 1848 Fibonacci again and again(SG函数)
HDU1848Fibonacci again and again(博弈论)