【HDU】1848 Fibonacci again and again

http://acm.hdu.edu.cn/showproblem.php?pid=1848

题意:同nim,3堆,每次取的为fib数,n<=1000

#include <cstdio>

#include <cstring>

using namespace std;

int f[1005], a[100];

bool b[20];

int main() {

	a[1]=1; a[2]=2;

	for(int i=3; i<=15; ++i) a[i]=a[i-1]+a[i-2];

	f[0]=0;

	for(int i=1; i<=1000; ++i) {

		memset(b, 0, sizeof b);

		for(int j=1; j<=15; ++j) if(i>=a[j]) b[f[i-a[j]]]=1;

		for(int j=0; j<=16; ++j) if(!b[j]) { f[i]=j; break; }

	}

	int x, y, z;

	while(scanf("%d%d%d", &x, &y, &z), x|y|z) f[x]^f[y]^f[z]?puts("Fibo"):puts("Nacci");

	return 0;

}

  


 

好无聊= =

求出sg然后求sg和就行了= =而且是暴力哦~

你可能感兴趣的:(fibonacci)