/* 当n为1的时候是输出first,n为2的时候输出second, 3的时候也是输出second,当n为4的时候,第一个人想获胜就必须先取 一个,这是剩余的石子数为3,此时无论第二个人如何取,第一个人都 能够赢,当n为5的时候,first不可能获胜,因为他取2时,second直接 取掉剩余的3个,取1时,second也是取1,这样就演变为n为3的时候了, 所以n为5时候,输出的是second ,当n为6的时候,first只要取掉1个, 就可以让局势变为n为5的时候,输出的是first,n为7的时候,first取掉 2个,又可以变为5的时候,所以也是输出first,n为8的时候,当first 取1个时候,局势变为7的时候,第二个人可以赢,取2时候,变为n为6的时 候,也是第二个人赢,取三个时候,second直接取掉剩余的5个,所以,n为 8的时候,是输出second。从上面可以看出,n为2,3,5,8时,这些都是输 出second,也就是说这些就是必败点,仔细的人会发现这些满足斐波那契数 的规律,可以推断13也是一个必败点,也就是说,只要是斐波那契数,都是 必败点,输出的就是second,所以,我们可以利用斐波那契数数的公式: fib[i]=fib[i-1]+fib[i-2],只要n是斐波那契数,那就输出second. */ #include <stdio.h> const int MAXN = 50; typedef long long LL; LL fib[MAXN]; int main() { fib[0] = 2, fib[1] = 3; //直接从第三项2开始算起 for(int i = 2; i <= 49; i ++) fib[i] = fib[i - 1] + fib[i - 2]; LL n; while(scanf("%lld", &n), n) { int i; bool flag = false; for(i = 0; i < 50; i ++) { if(n == fib[i]) { flag = true; break; } } if(flag) puts("Second win"); else puts("First win"); } return 0; }