有2堆石子,有2个人,每个人可以从一堆取或从2堆取一样的个数的石子,至少取1个。
问先手的是胜或输。
设(ak,bk)我么成为局势。 (0,0)(1,2)(3,5)(4,7)。。这种先手必输的叫奇异局势。
bk=ak+k;
三个性质:
1.任意自然数都包含在一个且只有一个奇异局势。
2.任意操作都可将奇异局势变为非奇异局势。如(ak,bk)为奇异局势,
若改变一个,那必定变为非奇异局势。若同时改变2个,bk-ak的并没有改变,
而ak改变,所以一定不是奇异局势。
3.采取适当的方法可以将非奇异局势变为奇异局势。
对于局势(a,b)如果a==b,那取a个后就是奇异局势。如果a=ak,b>bk,那只要取b中b-bk个即可。
如果a=ak,b<bk。从2堆中取走a(k) - a(b-ak)个,就成了(a(b-a(k)) , a(b-a(k))+b-a(k))
局势。如果a>ak,b=ak+k;从1堆拿走a-ak个。如果a<ak,b=ak+k;分2中情况,第一种:a=aj(j<k)
从第二堆拿走b-aj个。第二种:a=bj,从第二堆拿走b-aj个。

根据上面3个性质得到:面对非奇异局势先手必胜。

奇异局势(ak,bk)满足:

ak=(k*(1+sqrt(5))/2;
bk=ak+k;

#include<stdio.h>
#include<string.h>
#include<math.h>
#include<stdlib.h>
int main()
{
int i,j,n,m;
double v;
while(scanf("%d%d",&n,&m)!=EOF)
{
if(n>m)
{
int t=n;
n=m;
m=t;
}
double k=n*1.0*(sqrt()-)/;
double bk=n+k;
//printf("%.5lf %.5lf\n",bk,m*1.0);
if(abs(bk-m*1.0)<1e-)
printf("0\n");
else printf("1\n");
}
}

hdu1527 威佐夫博奕的更多相关文章

  1. hdu 2177 取(2堆)石子游戏(威佐夫博奕)

    题目链接:hdu 2177 这题不是普通的 Nim 博弈,我想它应该是另一种博弈吧,于是便推 sg 函数打了个 20*20 的表来看,为了方便看一些,我用颜色作了标记,打表代码如下: #include ...

  2. hdu 2177(威佐夫博奕)

    题意:容易理解,在威佐夫博奕的基础上新增加了一条要求:就是如果在赢得条件下,输出第一步怎么走. 分析:使用暴力判断,详细见代码. 代码: #include<stdio.h> #includ ...

  3. hdu 1527(威佐夫博奕)

    题意:容易理解. 分析:威佐夫博奕的模板题. 代码实现: #include<stdio.h> #include<string.h> #include<math.h> ...

  4. 【威佐夫博奕】 betty定理 poj 1067

    Description 有两堆石子,数量任意,可以不同.游戏开始由两个人轮流取石子.游戏规定,每次有两种不同的取法,一是可以在任意的一堆中取走任意多的石子:二是可以在两堆中同时取走相同数量的石子.最后 ...

  5. poj1067威佐夫博奕

    取石子游戏 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 31490   Accepted: 10374 Descripti ...

  6. 博弈论基础知识: 巴什博奕+斐波那契博弈+威佐夫博奕+尼姆博弈(及Staircase)(转)

    (一)巴什博奕(Bash Game):只有一堆n个物品,两个人轮流从这堆物品中取物,规定每次至少取一个,最多取m个.最后取光者得胜.若(m+1) | n,则先手必败,否则先手必胜.显然,如果n=m+1 ...

  7. 博弈---威佐夫博奕(Wythoff Game)

    这个写的不错 威佐夫博奕(Wythoff Game):有两堆各若干个物品,两个人轮流从某一堆或同 时从两堆中取同样多的物品,规定每次至少取一个,多者不限,最后取光者得胜.     这种情况下是颇为复杂 ...

  8. 新疆大学ACM-ICPC程序设计竞赛五月月赛(同步赛)- chess(威佐夫博奕)

    ---恢复内容开始--- 链接:https://www.nowcoder.com/acm/contest/116/G来源:牛客网 题意:一个棋盘,老王和小人下棋,棋子只能往下或者往左或者往左下走,小人 ...

  9. Poj 1067 取石子游戏(NIM,威佐夫博奕)

    一.Description 有两堆石子,数量任意,可以不同.游戏开始由两个人轮流取石子.游戏规定,每次有两种不同的取法,一是可以在任意的一堆中取走任意多的石子:二是可以在两堆中同时取走相同数量的石子. ...

随机推荐

  1. HDFS数据读写过程

  2. Leetcode151. Reverse Words in a String翻转字符串里的单词

    给定一个字符串,逐个翻转字符串中的每个单词. 示例: 输入: "the sky is blue", 输出: "blue is sky the". 说明: 无空格 ...

  3. 从大数据到快数据 数据智创未来——2019 CCF大数据与计算智能大赛正式开赛!

    8月17日,以“数据驱动,智创未来”为主题的2019 CCF大数据与计算智能大赛(CCF Computing Intelligence Contest,简称CCF BDCI)全球启动仪式,在北京大学正 ...

  4. mybatis深入理解(七)-----MyBatis缓存机制的设计与实现

    缓存设计 MyBatis将数据缓存设计成两级结构,分为一级缓存.二级缓存: 一级缓存是Session会话级别的缓存,位于表示一次数据库会话的SqlSession对象之中,又被称之为本地缓存.一级缓存是 ...

  5. MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest) request; // 转换成多部分request异常

    原来是需要在springmvc中配置 <!-- multipartResolver上传文件 --> <bean id="multipartResolver" cl ...

  6. Jboss配置HTTPS

    配置jboss的HTTP请求走SSL(HTTPS协议) l         生成keystore 文件 用keytool生成server.keystore文件: 进入命令行 C:\Documents ...

  7. JavaBean与Map的相互转换

    package com.bizvane.utils.tools; import java.lang.reflect.Field; import java.util.Arrays; import jav ...

  8. 解决git的the remote end hung up问题_百度经验

    使用git更新或提交中途有时出现The remote end hung up unexpectedly的异常,特别是资源库在国外的情况下.此问题可能由网络原因引起. 工具/原料   git 方法/步骤 ...

  9. fileinput URL携带参数的问题,uploadExtraData,Bootstrap

    因为无法在URL中执行其他代码,通过阅读文档可知可以由uploadExtraData参数携带数据.于是在这里携带,如果uploadExtraData 无法接收到数据,一般是格式有误, 先尝试这个简单的 ...

  10. js的DOM节点操作:创建 ,插入,删除,复制,查找节点

    DOM含义:DOM是文档对象模型(Document Object Model,是基于浏览器编程的一套API接口,是W3C出台的推荐标准.其赋予了JS操作节点的能力.当网页被加载时,浏览器就会创建页面的 ...