贝蒂定理整数划分问题(博弈 POJ 1067)

        我们知道贝蒂定理是描述一类整数划分的方法,贝蒂定理如下:

1/a+1/b=1,这里的a,b都是正的无理数,那么我们就有P={[ma]|m为正整数},Q={[mb]|m为正整数},此时P与Q的交为空集,P与Q的并正好就是Z+这个集合。

        对于POJ1067这道题来说,很明显就是博弈,我们使用sg函数爆出sg值之后就会发现,sg[i][j]为0当且仅当i,j正好是Z+的一个划分。并且j=i+k,k表示第几个这种数对。

        于是我们使用贝蒂定理,i[k]=[ka],j[k]=[ka]+k=[k*(a+1)]=[k*b],于是我们把b=a+1带入1/a+1/b=1中解出a为(1+sqrt(5))/2,b=(3+sqrt(5))/2。

       有了a,b,我们直接判断给出的i,j是否在整数划分的对中,如果在的话就是必败态,否则就是必胜态。

       代码就不贴了,还是挺简单的……

你可能感兴趣的:(贝蒂定理整数划分问题(博弈 POJ 1067))