其实我也不太了解这个这个威佐夫博弈,定理的证明也没去过多的了解,只知道,它是一个数列,表示在这两个数一组的一种情况,如,(1,2),(3,5),(4,7).....中表示了先取的败局,可以用
一个黄金分割点来刻画。具体要认懂,去看别人的分析吧,对于学习编程的人,没必要去个个弄懂,这么多理论,要弄懂,并非易事,我们只要知道有这么一回事就行了,怎么用代码去实现它,就ok了。
#include<stdio.h>
#include<math.h>
int main()
{
int n,m;
double p=(sqrt(5.0)+1)/2.0;
while(scanf("%d%d",&n,&m)!=-1)
{
int c=fabs(n-m); //求差
n=m>n?n:m; //取最小值
if(n==(int)(p*c)) printf("0\n"); //判断最小值是否接近黄金分割点与两个数的差的乘积。
else printf("1\n");
}
return 0;
}