POJ1067 取石子游戏 Wythoff's game C语言

题目:http://poj.org/problem?id=1067

题目大意:中文题不解释……

思路:威佐夫博奕,其实不大懂……附一个链接http://www.docin.com/p-804326.html

      就是ak,bk满足ak = (sqrt(5) + 1) / 2 下取整,bk = ak+k ,那么你所面对的就是奇异局势,必败,输出0,否则你必胜,输出1。

提交情况: WA n次, TLE 2次, AC 1次

总结:拖了好久的题,定理的证明实在太纠结了。先开始脑残的暴搜k,后来才想到不用管k是多少,可以把k消掉,ak、bk之间满足关系就好。ak要下取整,否则会WA

   只是想把拖了很久的题过掉……博弈的东西,看不懂,不能自己推出公式的话,以后还是不要做了……没有意义……

 

AC code:

View Code
 1 #include <stdio.h>
2 #include <math.h>
3 #include <stdlib.h>
4
5 #define K ((1 + sqrt((double)5)) / 2)
6
7 int main () {
8 int m, n;
9 int a, b;
10 while(~scanf("%d%d", &m, &n)) {
11 a = m <= n ? m : n;
12 b = m >= n ? m : n;
13 if (floor((double)(b - a) * K) == a)
14 printf("0\n");
15 else
16 printf("1\n");
17 }
18 return 0;
19 }
posted @ 2011-07-24 11:31  cloehui  阅读(620)  评论(0编辑  收藏  举报