取(2堆)石子游戏(杭电2177)「建议收藏」

取(2堆)石子游戏(杭电2177)

大家好,又见面了,我是全栈君。

取(2堆)石子游戏

Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 1175    Accepted Submission(s): 706




Problem Description
有两堆石子,数量随意,能够不同。游戏開始由两个人轮流取石子。游戏规定,每次有两种不同的取法。一是能够在随意的一堆中取走随意多的石子;二是能够在两堆中同一时候取走同样数量的石子。

最后把石子所有取完者为胜者。

如今给出初始的两堆石子的数目。假设轮到你先取。假设两方都採取最好的策略,问最后你是胜者还是败者。假设你胜,你第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
/*本题还是威佐夫博弈。
利用重要性质:不论什么自然数都包括在一个且仅有一个神秘局势中。

神秘局势即必败点,想要理解威佐夫博弈,在百度文库博弈入门有详解 *//*核心思路:以m[k],n[k]为界限来分析,就是3种情况(1)假设a>m[k]。b>n[k],自然的剩下的石子数量就是a[k],b[k]。(2)假设a<m[k](b<n[k])。然后你就须要在m[k]之前寻找是不是有m[i]或者b[i]和a相等,是不是有m[i]或者n[i]和b相等,当然了有的情况是不须要考虑的由于是不可能出现的。(3)。假设a=m[k]。那么你就挂了。*/#include<stdio.h>#include<math.h>int a[1000010];int b[1000010];int main(){ int m,n,t,k,i; a[0]=0,b[0]=0; a[1]=2,b[1]=1; for(i=2;i<1000010;i++) //先打表。 { b[i]=i*(1+sqrt(5))/2; a[i]=b[i]+i; } while(scanf("%d %d",&m,&n)!=EOF&&(m+n)) { if(m<n); { t=m;m=n;n=t; } k=m-n; if(n==b[k]) { printf("0\n"); continue; } else //核心思路的代码。 { printf("1\n"); if(n<b[k]) { for(i=1;i<n;i++){ if(n==b[i]&&m>a[i]) printf("%d %d\n",b[i],a[i]); if(m==a[i]&&n>b[i]) printf("%d %d\n",b[i],a[i]); } } if(n>b[k]) { printf("%d %d\n",b[k],a[k]); for(i=1;i<n;i++) { if(n==a[i]&&m>b[i]) printf("%d %d\n",b[i],a[i]); if(n==b[i]&&m>a[i]) printf("%d %d\n",b[i],a[i]); } } } } return 0;}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/116161.html原文链接:https://javaforall.net

(0)
上一篇 2022年1月25日 上午10:00
下一篇 2022年1月25日 上午10:00


相关推荐

  • SecureCRTPortable – 破解

    SecureCRTPortable – 破解问题总结:关闭SecureCRT时报错解决方法:o.删除SecureCRT.dmp(C:\用户\yalin.lu\AppData\Roaming)。o.打开命令提示符,输入命令“regedit”打开注册表编辑器,Ctrl+F搜索“VanDyke”,注意是“全字匹配”,将搜索到的Vandyke文件夹都删掉。HKEY_CURRENT_USER>Software>VanDykeH…

    2022年4月26日
    84
  • 《JavaScript设计模式》初次笔记——wsdchong[通俗易懂]

    《JavaScript设计模式》初次笔记——wsdchong[通俗易懂]《JavaScript设计模式》初次笔记前言设计模式一直久仰大名,但是没有去花时间去了解,于是今天特意花时间去看《JavaScript设计模式》(2013年6月出版)和w3cschool上的设计模式。然后做了一些笔记。以《JavaScript设计模式》为目录,以w3cschool上的设计模式为补充。讲的内容有三:设计模式、JavaScript设计模式、其他(模块化的JavaScript设计模式、jQuery设计模式、jQuery插件设计模式)。学习目的:尝试性地了解JavaScript设计模式,方

    2022年7月12日
    20
  • 文本挖掘的介绍

    文本挖掘的介绍1、文本挖掘的定义文本挖掘是指从大量文本的集合C中发现隐含的模式p。如果将C看作输入,将p看作输出,那么文本挖掘的过程就是从输入到输出的一个映射ξ:C→p。2、文本挖掘过程包含的技术文本特征的提取、信息检索、自然语言处理、文本挖掘、文本分类、文本聚类、关联分析等等3、文本挖掘的一般过程3.1 数据预处理技术预处理技术主要包括Stemming(英文)/分词(中文

    2022年6月29日
    24
  • matlab导入文件夹里所有图片_如何创建快捷方式到指定文件夹

    matlab导入文件夹里所有图片_如何创建快捷方式到指定文件夹在matlab中,直接imwrite()保存图片,会保存到当前工作目录文件夹或其子文件夹。%直接保存imwrite(picture,’test1.png’)%在当前工作目录下新建文件夹并保存mkdirimage%如果文件夹已存在,会有警告,但不影响运行imwrite(picture,’image/test1.png’)如果要把图片保存到其他指定的文件夹,…

    2025年11月7日
    2
  • linux运行jar包的命令_linux部署jar包的几种方式

    linux运行jar包的命令_linux部署jar包的几种方式要运行java的项目需要先将项目打包成war包或者jar包,打包成war包需要将war包部署到tomcat服务器上才能运行。而打包成jar包可以直接使用java命令执行。在linux系统中运行jar包主要有以下几种方式。一、java-jarXXX.jar这是最基本的jar包执行方式,但是当我们用ctrl+c中断或者关闭窗口时,程序也会中断执行。二、java-jarXXX.jar&&代表在后台运行,使用ctrl+c不会中断程序的运行,但是关闭窗口会中断程序的运行。

    2022年10月4日
    3
  • 移动硬盘出现参数错误,无法访问的问题

    移动硬盘出现参数错误,无法访问的问题win7连接移动硬盘,使用过程中出现死机,强制重启电脑,开机后移动硬盘出现参数错误无法访问,百度后,尝试用win+r打开运行窗口,输入CHKDSKE:/F/R,其中E换成参数错误的盘符嗲,点击确

    2022年7月2日
    52

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号