威佐夫博弈基础
2016-08-25 19:22
197 查看
题目:poj1067
题意:游戏开始由两个人轮流取石子。游戏规定,每次有两种不同的取法,一是可以在任意的一堆中取走任意多的石子;二是可以在两堆中同时取走相同数量的石子。最后把石子全部取完者为胜者。先手胜输出1,先手负输出0.
解答:有一个神奇的公式。ak =[k(1+√5)/2],bk= ak + k (k=0,1,2,...n 方括号表示取整函数)。在判断是否满足的时候,算出ak与bk的差值。然后再乘(1+√5)/2,取整。看是否等于ak(两数中较小的那一个)。
题意:游戏开始由两个人轮流取石子。游戏规定,每次有两种不同的取法,一是可以在任意的一堆中取走任意多的石子;二是可以在两堆中同时取走相同数量的石子。最后把石子全部取完者为胜者。先手胜输出1,先手负输出0.
解答:有一个神奇的公式。ak =[k(1+√5)/2],bk= ak + k (k=0,1,2,...n 方括号表示取整函数)。在判断是否满足的时候,算出ak与bk的差值。然后再乘(1+√5)/2,取整。看是否等于ak(两数中较小的那一个)。
#include<iostream> #include<cstdio> #include<cmath> using namespace std; int main() { int a,b; while(~scanf("%d%d",&a,&b)) { int t; if(a > b) { t = a; a = b; b = t; } int d = b - a; int tmp = floor(d * (1 + sqrt(5.0))/2); if(tmp == a) printf("0\n"); else printf("1\n"); } return 0; }
相关文章推荐
- 威佐夫博弈基础2
- 51nod1072---威佐夫博弈(51nod基础:博弈)
- HDU2177 取(2堆)石子游戏 威佐夫博弈
- 人机博弈之(五)---估值基础
- 威佐夫博弈问题
- POJ 1067 威佐夫博弈(Wythoff Game)问题 (取石子游戏)
- 威佐夫博弈 hdu 2177
- POJ 1067 取石子游戏(威佐夫博弈-黄金分割)
- hdu~1527/poj~1067~威佐夫博弈
- 巴什博弈、威佐夫博弈、尼姆博弈
- hdu 2147 kiki's game(基础博弈)
- 人机博弈之(五)---估值基础
- 威佐夫博弈(Wythoff Game)
- POJ 1067 取石子游戏 (巴什博弈+威佐夫博弈)
- POJ1067_取石子游戏_威佐夫博弈
- 【博弈】威佐夫博弈poj1067 取石子游戏
- 1067 取石子游戏 威佐夫博弈(Wythoff Game)
- 基础博弈—Nim博弈
- 威佐夫博弈
- 威佐夫博弈【转】