暑假集训(4)第六弹——— 组合(poj1067)
2016-08-06 17:00 HUAS_周林微 阅读(116) 评论(0) 编辑 收藏 举报题意概括:上一次,你成功甩掉了fff机械兵。不过,你们也浪费了相当多的时间。fff团已经将你们团团包围,并且逐步
逼近你们的所在地。面对如此危机,你不由得悲观地想:难道这acm之路就要从此中断?虽然走上这条路不过数日,好
歹你也帮助过许多生物脱离困境啊。怎么就好人......等等,你翻了翻包裹,拿出了一个颇为古旧的黄铜瓶,瓶口用锡
纸封着,这瓶子是上次那只青蛙送的,它说危难之际,打开瓶口便可解围。“娑殚之瓶!“,谁知刚拿出瓶子,就听到小A
惊讶的呼声,“它也许能帮我们脱离困境,不过恐怕会有些危险。”
”别管那么多,该怎么做?”你急忙问道,“打开瓶口就行了。”虽然说这个方法听起来有点耳熟,但依现在的处境,死马当
作活马医吧。你揭开瓶口的锡纸。一阵青烟从中冒出,化作一只可怖的恶鬼盯着你.
你:”......"
魔鬼:“只要你与我博弈三局,你全胜,那么我就满足你的一个愿望,否则,你只要输上一句。哼。”
你来不及吐槽这个恶俗的桥段,便答应了魔鬼的要求。第一局,魔鬼变出了两堆石头,他给出石头数目,你选择先后手,看
谁是最后一个无法再拿走石头的人。
问题分析:威佐夫博弈问题,只要判断当前处于p局势,还是N局势即可,当前为p则当前者失败,反之下位失败。
1 #include "stdio.h" 2 #include "cmath" 3 #define GOLD ((sqrt(5.0) + 1)/2) 4 int main() 5 { 6 int n,m,s; 7 while (scanf ("%d%d",&n,&m) != EOF) 8 { 9 s = std::abs(m-n); 10 if (n == int (s*GOLD) || m == int (s*GOLD)) 11 printf ("0\n"); 12 else 13 printf ("1\n"); 14 } 15 return 0; 16 }