题目描述:
有一堆个数为n(n>=2)的石子,游戏双方轮流取石子,规则如下:
1)先手不能在第一次把所有的石子取完,至少取1颗;
2)之后每次可以取的石子数至少为1,至多为对手刚取的石子数的2倍。
约定取走最后一个石子的人为赢家,
结论:
当n为Fibonacci数的时候,先手必败。
代码:
#include <stdio.h>
int main()
{
int fib[50],i,n;
fib[0]=1;fib[1]=2;
for(i=2;i<45;i++) //构造斐波拉切数组
fib[i]=fib[i-1]+fib[i-2];
scanf("%d",&n);
for(i=0;i<45;i++)
{
if(fib[i]==n)
{
break;
}
}
if(i<45)
puts("Second win");
else
puts("First win");
return 0;
}