hdu_1848(SG函数)

博弈论SG函数的最基本用法,

代码参考:http://www.cnblogs.com/vongang/archive/2011/09/24/2189393.html

#include<stdio.h>
#include<string.h>
#include<algorithm>
int main()
{
	int sg[1000+100];
	int f[100];
	f[1]=1,f[2]=2;
	int i,q,w;
	for(i=3;;i++)
	{
		f[i]=f[i-1]+f[i-2];
		if(f[i]>=1000+100)break;
	}
	sg[0]=0;
	sg[1]=1;
	int hash[30];
	for(i=1;i<=1000+99;i++)
	{
		memset(hash,0,sizeof(hash));
		for(q=1;f[q]<=i;q++)
		{
			hash[sg[i-f[q]]]=1;
		}
		for(q=0;q<=30;q++)
		{
			if(hash[q]==0)
			  {
			  	sg[i]=q;
			  	break;
			  }
		}
	}
	int a,b,c;
	while(scanf("%d%d%d",&a,&b,&c)!=EOF)
	{
		if(a==0||b==0||c==0)break;
		if(sg[a]^sg[b]^sg[c])
		{
			printf("Fibo\n");
		}
		else printf("Nacci\n");
	}
	return 0;
}


阅读更多
个人分类: 博弈
上一篇hdu_2150(几何判断线段相交,水题)
下一篇hdu_1517(SG函数+打表找规律)
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭