首页 > 代码库 > POJ 1067 取石子游戏
POJ 1067 取石子游戏
题目链接:http://poj.org/problem?id=1067
威佐夫博弈 (Wythoff game): 当两堆石子的数量符合特定关系时,先行者必赢。两堆石子分别有a,b个石子时(a<=b), floor( (b-a) * ( (sqrt(5)+1) /2 ) ) == a 时,先行者必输。代码如下:
1 #include <iostream> 2 #include <math.h> 3 #include <stdio.h> 4 #include <cstdio> 5 #include <algorithm> 6 #include <string.h> 7 #include <string> 8 #include <sstream> 9 #include <cstring> 10 #include <queue> 11 #include <vector> 12 #include <functional> 13 #include <cmath> 14 #include <set> 15 #define SCF(a) scanf("%d", &a) 16 #define IN(a) cin>>a 17 #define FOR(i, a, b) for(int i=a;i<b;i++) 18 #define Infinity 999999999 19 #define NInfinity -999999999 20 #define PI 3.14159265358979323846 21 #define MAXN 1000000005 22 #define RATIO (sqrt(5.0)+1.0)/2.0 23 typedef long long Int; 24 using namespace std; 25 26 int main() 27 { 28 int a, b; 29 while (scanf("%d %d", &a, &b) != EOF) 30 { 31 if (a > b) 32 { 33 int temp = b; 34 b = a; 35 a = temp; 36 } 37 if (floor((b - a) * RATIO) == a) 38 { 39 printf("0\n"); 40 } 41 else 42 printf("1\n"); 43 44 } 45 return 0; 46 }
POJ 1067 取石子游戏
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。