posts - 20,  comments - 6,  trackbacks - 0
 1 #include<stdio.h>
 2 void main()
 3 {
 4     int sg[1001],num[1001],fib[16]={1,2},n,m,p,j,i;
 5     for(i=2;i<16;i++)
 6         fib[i]=fib[i-1]+fib[i-2];//求出斐波那契数列
 7     sg[0]=0;//0的sg值为0
 8     for(i=1;i<1001;i++)
 9     {
10         for(j=0;fib[j]<=i;j++)
11             num[sg[i-fib[j]]]=i;//把i的后继的sg值都标注一下,表示出现过了,后面找sg的时候用
12         for(j=0;j<=i;j++)
13             if(num[j]!=i)
14             {sg[i]=j;break;}//找到最小的整数j,成为i的sg值
15     }
16     while(scanf("%d%d%d",&n,&m,&p)==3&&(m!=0||n!=0||p!=0))
17         puts(sg[m]^sg[n]^sg[p]?"Fibo":"Nacci");//异或判断博弈结果,输出结果
18 }

posted on 2009-02-06 22:43 混沌的云 阅读(151) 评论(0)  编辑 收藏 引用

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


<2009年2月>
25262728293031
1234567
891011121314
15161718192021
22232425262728
1234567

常用链接

留言簿(1)

随笔档案

搜索

  •  

最新评论

阅读排行榜

评论排行榜