利用的是sg函数的求取和游戏的和,模板题
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#define MAX 1007
using namespace std;
int m,n,p;
int f[21];
void init ( )
{
f[1] = 1 , f[2] = 2;
for ( int i = 3 ; i <= 16 ; i++ )
f[i] = f[i-1] + f[i-2];
}
int sg[MAX],hash[MAX];
void SG ( int n = 1000 )
{
memset ( sg , 0 , sizeof ( sg ) );
for ( int i = 1 ; i <= n ; i++ )
{
memset ( hash , 0 , sizeof (hash));
for ( int j = 1 ; f[j] <= i ; j++ )
hash[sg[i-f[j]]] = 1;
for ( int j = 0 ; j <= n ; j++ )
if ( !hash[j] )
{
sg[i] = j;
break;
}
}
}
int main ( )
{
init ( );
SG();
while ( ~scanf ( "%d%d%d" , &n , &m , &p ),n+m+p )
{
if ( sg[n]^sg[m]^sg[p] ) puts ( "Fibo" );
else puts ( "Nacci" );
}
}