1、 http:/ http:/ 函数先看 HDU-1848任何一个大学生对菲波那契数列(Fibonacci numbers)应该都不会陌生,它是这样定义的:F(1)=1;F(2)=2;F(n)=F(n-1)+F(n-2)(n=3);所以,1,2,3,5,8,13就是菲波那契数列。今天,又一个关于 Fibonacci 的题目出现了,它是一个小游戏,定义如下:1、 这是一个二人游戏;2、 一共有 3 堆石子,数量分别是 m, n, p 个;3、 两人轮流走;4、 每走一步可以选择任意一堆石子,然后取走 f 个;5、 f 只能是菲波那契数列中的元素(即每次只能取 1,2,3,5,8等数量) ;6、 最
2、先取光所有石子的人为胜者;假设双方都使用最优策略,请判断先手的人会赢还是后手的人会赢Input输入数据包含多个测试用例,每个测试用例占一行,包含 3 个整数m,n,p(1#include #include using namespace std;int k,fibo100,f10001;int mex1(int p)int i,t;bool g101=0;for(i=0;i#include #include using namespace std;int k,fibo100,f10001;int mex1(int p)int i,t;bool g101=0;for(i=0;ik;i+)t=p-
3、fiboi;if(t0)break;if (ft=-1)ft=mex1(t);gft=1;for(i=0;i+)if (!gi)return i; int main(int argc, char *argv)int m,l,s,y;while(scanf(“%d“,ik;i+)scanf(“%d“, if (k=0) break;sort(fibo,fibo+k);memset(f,-1,sizeof(f);f0=0;for(int i=1;i=10000;i+)fi=mex1(i);scanf(“%d“,for(int i=1;i=m;i+)s=0;scanf(“%d“,for(int j=1;j=l;j+)scanf(“%d“,s=sfy; if (s=0)printf(“L“);elseprintf(“W“); coutendl;system(“PAUSE“);return EXIT_SUCCESS;分析 总结 就好了!