Pku 1067 取石子游戏
题目:
有两堆石子,数量任意,可以不同。游戏开始由两个人轮流取石子。游戏规定,每次有两种不同的取法,一是可以在任意的一堆中取走任意多的石子;二是可以在两堆中同时取走相同数量的石子。最后把石子全部取完者为胜者。现在给出初始的两堆石子的数目,如果轮到你先取,假设双方都采取最好的策略,问最后你是胜者还是败者。
分析:
威佐夫博弈
有若干堆石子,两个人轮流从某一堆中或同时从两堆中去同样多的石子,规定每次至少去一个,多则不限,最后一个取光石子的人获胜。
假设有A、B二人,A先开始去。
如果面对的(0,0),那么A已输了,这种局势成为奇异局势,在这种局势下,A必败。
所以只要判断A所遇到的局势是否为奇异局势就可以了。
先找去前几个奇异局势:(0,0)、(1,2)、(3,5)、(4,7)、(6,10)。。。
若任意给定一个局势(a,b),怎样判断?
根据公式有:ak =[k(1+√5)/2],bk= ak + k (k=0,1,2,...,n 方括号表示取整函数),观察发现其中出现了黄金分割(1+√5)/2 = 1.618..., 因此,由ak,bk组成的矩形近似为黄金矩形,令r=1.618…..,R=1/r=0.6180339887,只需要判断a==k*R,只要求出k即可,又有k=b-a。