hdu 2177 取(2堆)石子游戏(威佐夫博弈)_2堆宝石,每个人从一堆选走一个两个三个-程序员宅基地

技术标签: # 威佐夫博弈  hdu-2177  威佐夫博弈  

取(2堆)石子游戏

有两堆石子,数量任意,可以不同。游戏开始由两个人轮流取石子。游戏规定,每次有两种不同的取法,一是可以在任意的一堆中取走任意多的石子;二是可以在两堆中同时取走相同数量的石子。最后把石子全部取完者为胜者。现在给出初始的两堆石子的数目,如果轮到你先取,假设双方都采取最好的策略,问最后你是胜者还是败者。如果你胜,你第1次怎样取子?

Input
输入包含若干行,表示若干种石子的初始情况,其中每一行包含两个非负整数a和b,表示两堆石子的数目,a和b都不大于1,000,000,且a<=b。a=b=0退出。

Output
输出也有若干行,如果最后你是败者,则为0,反之,输出1,并输出使你胜的你第1次取石子后剩下的两堆石子的数量x,y,x<=y。如果在任意的一堆中取走石子能胜同时在两堆中同时取走相同数量的石子也能胜,先输出取走相同数量的石子的情况.

Sample Input
1 2
5 8
4 7
2 2
0 0

Sample Output
0
1
4 7
3 5
0
1
0 0
1 2



ps:手推下数据就会发现是最简单的威佐夫博弈

判断时直接套公式即可,如果不是奇异局势,则直接暴力寻找奇异局势

代码:

#include<stdio.h>
#include<math.h>
#include<string.h>
#include<algorithm>
using namespace std;

const double k=(sqrt(5.0)+1.0)/2.0;

int main()
{
    int a,b;
    while(scanf("%d%d",&a,&b),a+b)
    {
        int ak=(int)(k*(b-a));
        if(a==ak)
            printf("0\n");
        else
        {
            printf("1\n");
            for(int n=a-1,m=b-1;n>=0&&m>=0;--n,--m)//两堆取相同数量
            {
                if(n==(int)(k*(m-n)))
                {
                    printf("%d %d\n",n,m);
                    break;
                }
            }
            for(int i=b-1;i>=0;--i)//取大堆,因为取大堆的情况中包含了取小堆的情况
            {
                int n=a,m=i;
                if(n>m)
                    swap(n,m);
                if(n==(int)(k*(m-n)))
                {
                    printf("%d %d\n",n,m);
                    break;
                }
            }
        }
    }
    return 0;
}
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/blessLZH0108/article/details/78308358

智能推荐

WebView显示的网页在大分辨率屏下被放大 - 密度惹的祸_zoomdensity.close-程序员宅基地

文章浏览阅读1.6k次。例如适合800px宽度的页面,如果通过WebView在1024px的屏幕宽度下显示时,内容(图片)会被放大,整体页面会超出屏幕。 试了将WebView的settings中的缩放都关闭了也不行。 后来发现了WebSettings.ZoomDensity这个设置,并在文档中找到了以下说明: Enum for specifying the WebView's desired _zoomdensity.close

腾讯云16核32G28M轻量应用服务器测评报告:2024年高并发处理能力及优惠活动解析-程序员宅基地

文章浏览阅读386次,点赞5次,收藏8次。首先,我们需要明确一个概念:服务器的并发数不仅取决于服务器的硬件配置,还与网络带宽、应用类型等因素密切相关。当然,如果用户的访问时间延长,服务器所能支持的并发数也会相应增加。比如,如果网站页面的平均访问时长是3秒,那么腾讯云的这款服务器实际上可以支持54人同时访问。超出套餐部分的流量将按照腾讯云的标准价格进行计费,广州/上海/北京等核心地域的流量价格为0.8元/GB。总之,腾讯云的16核32G28M轻量应用服务器在支持用户并发数方面表现出色,无论是带宽资源还是流量套餐都足以满足大部分应用场景的需求。

记一次物理机安装centos7遇到的问题_modprobe error could not-程序员宅基地

文章浏览阅读1.2k次。记住设备名(sdb4),然后按ctrl + alt + del 重启,进入安装界面,按TAB编辑配置,改为vmlinuz initrd=initrd.img inst.stage2=hd:/dev/sdb4 quiet,即可进入安装界面,安装完成。请注意,这只是一个临时的解决方案,重启系统后 SELinux 将恢复到原来的状态。修改下方配置.img后面的为 linux dd quiet,按下回车后可以查看U盘的对应设备号sdb4,如果没看到的话可以输入r刷新几次。开启着的,说的是这个会影响某些路径的访问。_modprobe error could not

Http压测工具wrk使用指南【转】-程序员宅基地

文章浏览阅读93次。用过了很多压测工具,却一直没找到中意的那款。最近试了wrk感觉不错,写下这份使用指南给自己备忘用,如果能帮到你,那也很好。安装wrk支持大多数类UNIX系统,不支持windows。需要操作系统支持LuaJIT和OpenSSL,不过不用担心,大多数类Unix系统都支持。安装wrk非常简单,只要从github上下载wrk源码,在项目路径下执行make命令即可。git clone https..._wrk压测工具详细教程

像中文的罗马音字体复制_想一键统一PPT中的字体?用iSlide-程序员宅基地

文章浏览阅读325次。在制作PPT的时候,不免会使用多种字体,或者从其他软件复制过来的内容,粘贴后就应用了原来的字体。字体多了,对于页面来说反而变得花里胡哨。所以,有时需要把多余的字体全部删除,仅保留需要的一种或两种字体,可以使用PPT插件中的iSlide一键操作。1.打开PPT,建立空白演示文稿。2.在幻灯片中插入两段文字,分别为各段文字设置一种颜色。3.但是,当字体使用过多,例如下图所示,给各个段落文字分别使用一种..._ppt统一字体格式主题 强制 核心模式区别

HI3521D 系统(uboot,kernel,rootfs)打包成一个烧录文件_boot kernel app打包-程序员宅基地

文章浏览阅读3.5k次。1.准备文件系统 a.在osdrv/pub/中有已经编译好的文件系统(rootfs_uclibc),因此无需再重复编译文件系统,只需要根据单板上flash的规格型号制作文件系统镜像即可。b.往rootfs_uclibc中,添加自己项目的应用程序,相关库,相关配置c.制作文件系统nand flash 信息:2KB pagesize、4bit ecc即:mkyaffs2imag..._boot kernel app打包

随便推点

/usr/local/lib/python3.6/dist-packages/bs4/__init__.py:220: UserWarning: You provided Unicode markup_userwarning: you provided unicode markup but also -程序员宅基地

文章浏览阅读3.4k次。/usr/local/lib/python3.6/dist-packages/bs4/init.py:220: UserWarning: You provided Unicode markup but also provided a value for from_encoding. Your from_encoding will be ignored.warnings.warn(“You provided Unicode markup but also provided a value for from__userwarning: you provided unicode markup but also provided a value for from_

清华申请退学博士作品:完全用Linux工作_windows linux 清华退学-程序员宅基地

文章浏览阅读2.9k次。按: 尽管我们已经不习惯看长篇大论, 但我还是要说, 这是一篇值得你从头读到尾的长篇文章.2005年9月22日,清华在读博士生王垠在水木社区BLOG上发表了《清华梦的粉碎--写给清华大学的退学申请》明确要求退学, 引起社会各界广泛争论. 他创作的长篇文章《完全用Linux工作》, 洋洋两万多字, 从不同角度居高临下的阐述了他眼中Linux完全优越于Windows的各种理由, 这篇文章并不简单的是一_windows linux 清华退学

SmartForms 之二--设计_smartforms style standard paragraph is not filled-程序员宅基地

文章浏览阅读946次。 文章原址为:http://www.cnblogs.com/zhumk/archive/2005/06/04/167904.htmlABAP:SmartForms 之二--设计 报表要求:(见下表)要求:1、不是套打,表格线也需要输出2、每张报表打印8行记录,不足的空白行也需要输出3、按凭证号打印单据,可以连续打印多张报表。 一、创建样式:在创建Form之前,需要创建多种段落_smartforms style standard paragraph is not filled

Hive函数:row_number() over() 、 rank和dense_rank_row_number() over()和rank-程序员宅基地

文章浏览阅读1.4k次。row_number() over()为查询出来的每一行记录生成一个序号。序号从1开始,按照顺序,生成分组内记录的序列,row_number()的值不会存在重复,当排序的值相同时,按照表中记录的顺序进行排列。示例:利用row_number函数,对表中的数据根据id进行分组,按照pv倒序排序求最大的pv相关信息。select t.id, t.date, t.pvfrom(selectid,date, pv, row_number() over(partition by id ord_row_number() over()和rank

Java 创建一个快捷窗口 用于监控文件夹与打开文件夹_jframe 打开文件夹-程序员宅基地

文章浏览阅读430次。【代码】Java 创建一个快捷窗口 用于监控文件夹与打开文件夹。_jframe 打开文件夹

html中table监听修改事件,监听element-ui table滚动事件的方法-程序员宅基地

文章浏览阅读745次。背景做管理平台的项目,用到了element-ui,需要通过监听el-table滚动的位置来获取最新的数据,那么怎么样监听el-table的滚动呢?准备我们默认的技术栈是 vue+element-uitemplate代码::data="logList":show-header="false"row-class-name="table-row-class"height="700"ref="table"..._html监听表格加载事件

推荐文章

热门文章

相关标签