取(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;}

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • Java命令行运行错误: 找不到或无法加载主类

    Java命令行运行错误: 找不到或无法加载主类前言:虽然学习Java语言约有两年多,但在最近需要使用命令行工具编译并运行Java程序时,还是报错了。花费了一些时间,解决了该问题,发现解决方法在初学Java时使用过。一则,为了避免以后再出现同样的问题而浪费不必要的时间;二则,作为使用该语言的程序员,对于该语言的一些基本问题,应该有清晰的理解和认识;三则,网上的一些解决方案,不够完备。有的没有解释问题原因,直接给出答案;有的,未列举出某些常见情况的解决方案。因此,写此文章,让读者可以举一反三,深入理解问题。一、问题分析找不到或无法加载主类,主要原因有

  • 数据结构考研面试被问的问题_考研程序设计与数据结构

    数据结构考研面试被问的问题_考研程序设计与数据结构逻辑结构与物理结构的区别算法的特点常见的数据结构单链表结构和顺序存储结构的区别线性链表数组和链表的区别判断疫个链表是否有环,如何找到这个环单链表和双链表的区别头指针和头结点的区别简述KMP算法栈和队列的区别栈和队列的相同之处和不同之处两个栈实现队列,两个队列实现栈树和二叉树的相关概念二叉平衡树二叉搜索树红黑树图的相关概念邻接矩阵与邻接表的区别深度优先遍历与广度…

  • 香港科技大学赵天寿课题组_科大国盾科创板申请通过了吗

    香港科技大学赵天寿课题组_科大国盾科创板申请通过了吗2021年12月11日,“香港科大-越秀集团”百万奖金国际创业大赛·2021年度总决赛(点击下划线内容了解决赛信息)圆满落幕。在年度总决赛现场,【香港科大科创产业联盟】也正式成立。香港科技…

  • CRC32 Hash PK Murmur Hash「建议收藏」

    CRC32 Hash PK Murmur Hash「建议收藏」硬件指令实现的CRC32运算在多款主流CPU上性能超越Murmurhash,碰撞性能基本一致,多数场景可以使用CRC32硬件指令优化HASH算法提升性能

    2022年10月10日
  • navicat15.0.23 激活码(最新序列号破解)

    navicat15.0.23 激活码(最新序列号破解),https://javaforall.cn/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

  • gg 修改器游戏被保护_GG修改器sky光遇脚本下载app_GG修改器光遇脚本2020最新版下载 安卓版 V411.41.41…

    gg 修改器游戏被保护_GG修改器sky光遇脚本下载app_GG修改器光遇脚本2020最新版下载 安卓版 V411.41.41…GG修改器sky光遇脚本是一款知名的手机游戏修改软件,这款手机软件十分强劲,拥有它你能随时一键游戏修改值,加快手机游戏这些作用,使你在这儿感受到一站式的游戏辅助软件感受。这个脚本app不需要root权限就可以快速运行,有需要的朋友们赶紧来下载GG修改器sky光遇脚本2020最新版app吧。GG修改器sky光遇脚本app特色1.本专用工具永久免费、没有广告、绝对安全可靠;2.根据改动已经运作的游戏里…

发表回复

您的电子邮箱地址不会被公开。

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