hdu 2516 博弈

来源:互联网 发布:系统架构图软件 编辑:程序博客网 时间:2024/04/29 04:22

    首先 2个石头肯定是必败点,3个石头也是必败点,然后开始看后面,4个石头时,可以去一个使对手到必败点,而对手在这种情况下在必败点是不能赢得,所以4是必胜点。但

 

是后面5个石头的情况就不同了,因为5个石头 你肯定不会sb的走到4这个必胜点让对手赢, 但是你发现走到3时,在3这个位置可以直接获胜。 所以5是必败点。

 

在往后推几个就会发现。。。必败点满足斐波那契数列。
 

取石子游戏

Time Limit: 2000/1000 MS (Java/Others)Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 1290 Accepted Submission(s): 719


Problem Description
1堆石子有n个,两人轮流取.先取者第1次可以取任意多个,但不能全部取完.以后每次取的石子数不能超过上次取子数的2倍。取完者胜.先取者负输出"Second win".先取者胜输出"First win".

Input
输入有多组.每组第1行是2<=n<2^31. n=0退出.

Output
先取者负输出"Second win". 先取者胜输出"First win".
参看Sample Output.

Sample Input
2 13 10000 0

Sample Output
Second win Second win First win

#include<stdio.h>

int g[50];
int main()
{
g[1]=2;g[2]=3;
for(int i=3;i<50;i++)
g[i]=g[i-1]+g[i-2];
int n;
while(scanf("%d",&n)&&n)
{
int flag=0;
for(int i=1;i<50;i++)
if(g[i]==n)
{
flag=1;
break;
}
if(flag==1)
printf("Second win\n");
else
printf("First win\n");
}
return 0;
}


 
代码:
 
 
 
原创粉丝点击