X-man

导航

hdu 2516 取石子游戏

#include<stdio.h>
__int64 fb[100];
void Init()
{
    //int a=2;
    //int b=3;
    fb[0]=2;
    fb[1]=3;
    for(int i=2;i<50;i++)
    {
        //printf("%d ",a+b);
        fb[i]=fb[i-1]+fb[i-2];
        //printf("%I64d ",fb[i]);
    }
}
int main()
{
    int i,n;
    Init();
    while(scanf("%d",&n)!=EOF&&n)
    {
        for(i=0;i<50;i++)
            if(n==fb[i])break;
        if(i!=50)printf("Second win\n");
        else printf("First win\n");
    }
    return 0;
}
View Code

 

 

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

 

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

 

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

posted on 2013-10-10 22:18  雨钝风轻  阅读(196)  评论(0)    收藏  举报