原题:

描述

    Matrix67和Shadow正在做一个小游戏。
    桌子上放着两堆糖果,Matrix67和Shadow轮流对这些糖果进行操作。在每一次操作中,操作者需要吃掉其中一堆糖果,并且把另一堆糖果分成两堆(可以不相等)留给对方操作。游戏如此进行下去,糖果数会越来越少,最后必将出现这样一种情况:某人吃掉一堆糖果后发现另一堆里只剩一块糖果不能再分了。游戏规定此时该操作者吃掉最后这一块糖果从而取胜。
    这个游戏是不公平的。对于任意一种初始状态,总有一方有必胜策略。所谓有必胜策略是指,无论对方如何操作,自己总有办法取胜。
    Matrix67和Shadow将进行10次游戏,每一次游戏中总是Matrix67先进行操作。Matrix67想知道每一次游戏中谁有必胜策略。

输入格式

    输入数据一共10行,每行有两个用空格隔开的正整数,表示一次游戏开始时桌子上两堆糖果分别有多少个。
    对于50%的数据,这些正整数均不超过100;
    对于70%的数据,这些正整数均不超过10 000;
    对于100%的数据,这些正整数均不超过10 000位。

输出格式

    输出十行字符串。这些字符串只能是“Matrix67”或“Shadow”,它们表示对应的十行输入数据中有必胜策略的一方。
    请注意大小写。

测试样例1

输入

1 1 
1 2 
1 3 
1 4 
1 5 
2 1 
2 2 
2 3 
2 4 
2 5

输出

Matrix67 
Matrix67 
Matrix67 
Matrix67 
Matrix67 
Matrix67 
Shadow 
Shadow 
Matrix67 
Matrix67

一部分的解题思路:

标签: 博弈论

解题思路

当你要分的那一组是2,3时,必败,因为你必须分出个1。
当你分的是7,8时,也必败,因为
7=2+5或者3+4 8=2+6或者3+5或者4+4,这时对方下一步就能分给你2或者3,所以必败。
设a=[2,3,7,8]
设b=[1,4,5,6,9,10]
如果两个数都可写为10i+a的形式,设吃掉了第一个数,留下的第二个数10i+a,这时你无论怎么分,分出来的两个数一定有一个属于10i+b的形式。
而我们发现每个b都能写成两个a的形式。
1=3+8 4=2+2 5=2+3 6=3+3 9=2+7 10=2+8
因此如果两个数都是10i+a的形式,经过一轮之后回到手里的还是10i+a,所以必败。
但如果两个数中有一个数不是10i+a,这时可以把另外一个吃掉,然后把这个数分成两个10i+a,这时对方必败。
因此得出结论:如果两个数的末尾都属于a,Matrix67必败,否则Matrix67胜。
//====================================================挺起的分割线
一开始觉得很难 写个爆搜 输出20内的数据
22222222222222222222
21122211222112221122
21122211222112221122
22222222222222222222
22222222222222222222
22222222222222222222
21122211222112221122
21122211222112221122
22222222222222222222
22222222222222222222
22222222222222222222
21122211222112221122
21122211222112221122
22222222222222222222
22222222222222222222
22222222222222222222
21122211222112221122
21122211222112221122
22222222222222222222
22222222222222222222
(2代表比赢 1代表必输) 认真看 答案很清楚了 -_-  好像有点骗分的性质呀

转自:吃糖果游戏

这属于博弈论的知识,通过例子与找规律,并且从1开始去分析,从中的答案去推出相应的规律。一下是有种方法解题:其中一个找到对5取余数,余数为2/3的就必输,太刁了。

import java.util.Scanner;public class Main{public static void main(String[] args){Scanner scanner=new Scanner(System.in);while(scanner.hasNext()){int a=scanner.nextInt();int b=scanner.nextInt();new Main().solve(a, b);}}//方法一public void solve(int a,int b){int[] as=new int[]{2,3,7,8};int[] bs=new int[]{1,4,5,6,9,10};int modA=a%10;int modB=b%10;int i=0;for(i=0;i<bs.length;i++){if(bs[i]==modA||bs[i]==modB){System.out.println("Matrix67");break;}}if(i==bs.length)System.out.println("Shadow");}//方法二:会发现a/b处于5的时候,余数为2/3的时候,shadow赢public void solve2(int a,int b){if(a%5==2||a%5==3||b%5==2||b%5==3)System.out.println("Shadow");elseSystem.out.println("Matrix67");}
}

P1567 吃糖果游戏相关推荐

  1. vijos1196|吃糖果游戏|博弈论

    描述 Matrix67和Shadow正在做一个小游戏. 桌子上放着两堆糖果,Matrix67和Shadow轮流对这些糖果进行操作.在每一次操作中,操作者需要吃掉其中一堆糖果,并且把另一堆糖果分成两堆( ...

  2. Vijos P1196吃糖果游戏[组合游戏]

    描述 Matrix67和Shadow正在做一个小游戏. 桌子上放着两堆糖果,Matrix67和Shadow轮流对这些糖果进行操作.在每一次操作中,操作者需要吃掉其中一堆糖果,并且把另一堆糖果分成两堆( ...

  3. vijos1196吃糖果游戏

    描述 Matrix67和Shadow正在做一个小游戏. 桌子上放着两堆糖果,Matrix67和Shadow轮流对这些糖果进行操作.在每一次操作中,操作者需要吃掉其中一堆糖果,并且把另一堆糖果分成两堆( ...

  4. 吃糖果游戏(tyvj 1567)

    tyvj 1567: 博弈,题目给的数据是不超过1000位,所以这题应该找规律求解. 我是将30以内的sg值值求出来,然后规律就很容易看出来啦. 求sg值: #include <stdio.h& ...

  5. Phaser.js开发-怪物吃糖果

    什么是怪物要糖果? 当我开始制作游戏,首先确定核心玩法,并尝试迅速建立了一个游戏原型.在这个案例中,我们从一个相当简单的演示 发展出来的游戏名字叫 怪物要糖果 . 首先我会告诉你项目的结构,所以你可以 ...

  6. 吃豆豆游戏的C语言程序码,C++实现基于控制台界面的吃豆子游戏

    本文实例讲述了C++实现基于控制台界面的吃豆子游戏.分享给大家供大家参考.具体分析如下: 程序运行界面如下所示: ESC键可退出游戏. main.cpp源文件如下: #include "li ...

  7. 手机吞吃蛇游戏的设计与开发

    为什么80%的码农都做不了架构师?>>>    J2ME(Java 2 Micro Edition) 是近年来随着各种不同设备,尤其是移动通信设备的飞速发展而诞生的一项新的开发技术. ...

  8. 信息学奥赛一本通 1193:吃糖果 | OpenJudge NOI 2.6 1944:吃糖果

    [题目链接] OpenJudge NOI 2.6 1944:吃糖果 注:ybt 1193:吃糖果 页面打不开,可以在OpenJudge做该题. [题目考点] 1. 递推/递归 2. 搜索 [解题思路] ...

  9. 信息学奥赛一本通 2069:【例2.12】糖果游戏

    [题目链接] ybt 2069:[例2.12 ]糖果游戏 [题目考点] 1. 复合赋值表达式 表格中两列对应写法是等价的 写法1 写法2 a = a + b a += b a = a - b a -= ...

最新文章

  1. 李永乐线性代数手写笔记-线性方程组
  2. 解决_类百度在线留言本_所遇到的问题
  3. 如何准备电赛?19年电赛经验总结!
  4. php中花括号的使用
  5. 综评:5个方面看刚刚发布的Kubernetes 1.12
  6. Flat Tech html5 前端响应式模板
  7. java鼠标点击暂停程序_java – LWJGL抓取鼠标 – 如果应用程序挂起或使用抓取的鼠标点击断点时调试...
  8. Android开发笔记(六十五)多样的菜单
  9. 二胎上位之路:html5报表和原生报表的笑尿撕逼
  10. 聚类分析二:DBSCAN算法
  11. scrapy命令介绍
  12. 发现了《ACE程序员教程》中一个例程的问题
  13. VC编程实现运行Excel宏 Run
  14. 给PDF文件添加图片的方法
  15. win10打开计算机管理闪退,win10系统下任务管理器闪退的解决方法
  16. 投基取巧:如何通过基金投资获得 20%+ 的收益?基金理财干货分享,附思维导图!
  17. php身份证注册判断重名,同名同姓测试,全国公民身份信息系统库查重名
  18. 如何使用WPS从正文开始页码为1,而不是从目录开始?
  19. pythontext函数用法汇总_Python - Text Summarization
  20. 数据库select的查询使用方法

热门文章

  1. nginx配置详解(容器、负载)—官方原版
  2. oracle数据库(表、视图、索引、事务)
  3. c语言函数变量地址符,C语言中取地址符做函数形参?—— 引用的讨论
  4. linux 程序结构,Objective-C 基本的程序结构
  5. Linux登录输入密码后返回登录界面
  6. 基于AI排序算法的指数增强策略
  7. 干货!容忍数据缺失的临床超声报告知识图谱乳腺癌诊断
  8. java jisuan da xie zi mu ge shu_Java 实现汉字转换为拼音的实例
  9. SOPHON BM1684芯片解码性能以及支持的文件格式
  10. Name Mangling