
#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 "); else printf("First win "); } return 0; }
首先 2个石头肯定是必败点,3个石头也是必败点,然后开始看后面,4个石头时,可以去一个使对手到必败点,而对手在这种情况下在必败点是不能赢得,所以4是必胜点。但
是后面5个石头的情况就不同了,因为5个石头 你肯定不会sb的走到4这个必胜点让对手赢, 但是你发现走到3时,在3这个位置可以直接获胜。 所以5是必败点。
在往后推几个就会发现。。。必败点满足斐波那契数列。