Qiuqiqiu  
不管道路多么崎岖坎坷,我永远不停下追逐梦想的脚步!

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

组合博弈 sg值

我的代码
 1 #include <stdio.h>
2 #include <string.h>
3 int main()
4 {
5 const int N=1001,M=17;
6 const char name[2][10]={"Nacci","Fibo"};
7 int f[M]={1,1};
8 for (int i=2;i<M;i++) f[i]=f[i-1]+f[i-2];
9 int a[N]={0},vis[N],i,j,n,m,p;
10 for (i=0;i<N;i++)
11 {
12 memset(vis,0,sizeof(vis));
13 for (j=1;i-f[j]>=0;j++) vis[a[i-f[j]]]=1;
14 j=0; while (vis[j]) j++;
15 a[i]=j;
16 }
17 while (scanf("%d%d%d",&m,&n,&p),m||n||p)
18 printf("%s\n",name[(a[m]^a[n]^a[p])>0]);
19 }

 

posted on 2012-01-01 23:02  Qiuqiqiu  阅读(300)  评论(0)    收藏  举报