题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1846

Problem Description

十年前读大学的时候,中国每年都要从国外引进一些电影大片,其中有一部电影就叫《勇敢者的游戏》(英文名称:Zathura),一直到现在,我依然对于电影中的部分电脑特技印象深刻。
今天,大家选择上机考试,就是一种勇敢(brave)的选择;这个短学期,我们讲的是博弈(game)专题;所以,大家现在玩的也是“勇敢者的游戏”,这也是我命名这个题目的原因。
当然,除了“勇敢”,我还希望看到“诚信”,无论考试成绩如何,希望看到的都是一个真实的结果,我也相信大家一定能做到的~
各位勇敢者要玩的第一个游戏是什么呢?很简单,它是这样定义的:
1、  本游戏是一个二人游戏;
2、  有一堆石子一共有n个;
3、  两人轮流进行;
4、  每走一步可以取走1…m个石子;
5、  最先取光石子的一方为胜;
如果游戏的双方使用的都是最优策略,请输出哪个人能赢。

Input

输入数据首先包含一个正整数C(C<=100),表示有C组测试数据。
每组测试数据占一行,包含两个整数n和m(1<=n,m<=1000),n和m的含义见题目描述。

Output

如果先走的人能赢,请输出“first”,否则请输出“second”,每个实例的输出占一行。

Sample Input

2
23 2
4 3

Sample Output

first
second
解题思路:巴什博弈,取石子系列简单题。题目的意思就是现有一堆n个石子,两个人轮流从这堆石子中取石子,规定每次至少取一个,最多取m个,最后取光者得胜。结论:若n%(m+1)=0,则先手必败,否则先手必胜。显然,如果n=m+1,那么由于一次最多只能取m个,所以无论先取者拿走多少个,后取者都能够一次拿走剩余的石子剩余个数<=m),则后者取胜(大前提是两者都采用最优策略)。因此我们发现了如何取胜的法则:如果n=(m+1)*r+s,(s≤m),那么先取者要拿走s个石子,如果后取者拿走k(k≤m)个,那么先取者再拿走(m+1-k)个,结果剩下(m+1)(r-1)个,以后保持这样的取法,那么先取者肯定获胜,即先手要保持给后手留下(m+1)的倍数,就能最后获胜.

AC代码:

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 int main()
 4 {
 5     int c,n,m;
 6     cin>>c;
 7     while(c--){
 8         cin>>n>>m;
 9         if(n%(m+1))cout<<"first"<<endl;//只要初始条件保证取余(m+1)不等于0则先手必赢
10         else cout<<"second"<<endl;//如果取余为0,则先手必输
11     }
12     return 0;
13 }

转载于:https://www.cnblogs.com/acgoto/p/9092907.html

题解报告:hdu 1846 Brave Game(巴什博弈)相关推荐

  1. HDU 1846 Brave Game 巴什博弈 SG打表

    题目: http://acm.hdu.edu.cn/showproblem.php?pid=1846 题意: Problem Description 十年前读大学的时候,中国每年都要从国外引进一些电影 ...

  2. HDU 1846 Brave Game(巴什博弈)

    Brave Game Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total ...

  3. hdu 1846 Brave Game 勇敢者的游戏 DP/巴什博弈

    动态规划/简单博弈 Brave Game Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Oth ...

  4. HDU 1846 Brave Game

    简单的巴什博弈,仔细分析可知要使第二个人赢,只有当(m+1)是n的因子时才会成立,所以如小白说直接puts( "" )即可; #include<stdio.h> int ...

  5. HDU 1846 Brave Game 【巴什博奕】

    Brave Game Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total ...

  6. HDU——1846 Brave Game(巴什博弈)

    题目链接: #include<iostream> #include<cstdio> #include<cstring> #include<cmath> ...

  7. HDU 1846 Brave Game 巴士博弈

    博弈问题 巴士博弈 HDU1846<-点击此处进入链接 威尔夫博弈 HDU1527<-点击此处进入链接 斐波那契博弈 HDU2516<-点击此处进入链接 尼姆博弈 HDUXXX< ...

  8. HDU - 1846 Brave Game

    十年前读大学的时候,中国每年都要从国外引进一些电影大片,其中有一部电影就叫<勇敢者的游戏>(英文名称:Zathura),一直到现在,我依然对于电影中的部分电脑特技印象深刻.  今天,大家选 ...

  9. HDU 1846 Brave Game(SG函数)

    const int N=1e3+5;int n,m;int i,j,k;int sg[N];bool vis[N];void getSG() {ms(sg,0);for(int i=1;i<=n ...

最新文章

  1. 薅百度GPU羊毛!PaddlePaddle大升级,比Google更懂中文,打响AI开发者争夺战
  2. 中国首个火星探测器天问一号发射成功!
  3. Z 字形变换 C++实现 java实现 leetcode系列(六)
  4. Exchange日常管理之二十一:管理邮件归档
  5. Unix command to find CPU Utilization
  6. cs架构用什么语言开发_我为什么建议Python开发者将ES6作为第二语言
  7. ueditor+asp.net异步提交,可以实现了,嘿嘿
  8. Python安装注意事项
  9. PHP正则表达式完全手册
  10. USB转串口那些事儿—串口驱动类型
  11. 查看opencv版本
  12. Stacer ---- Linux系统优化和监测工具
  13. 收费系统对接微信公账号流程
  14. 华为2019年3月27日实习生笔试题及解答
  15. 第一天mysq踩坑--ERROR 1820 (HY000): You must reset your password using ALTER USER statement before execut
  16. 资料:《大学英语》精读修订版(全六册)原文及全文翻译
  17. 服务器端查询客户端cookie时的拙计
  18. Android多媒体添加软解码
  19. Swiper图片垂直滑动
  20. 怎么知道自己适合做什么?

热门文章

  1. SSM整合对数据库表的查询
  2. iOS使用dpkg删除包提示不存在
  3. TX2--wifi模块开启AP路由功能
  4. Android7.1.2源码解析系列】Android编译系统翻译------Android_Build_System(/build/core/build-system.html)
  5. mycat - 解开它神秘的面纱
  6. No qualifying bean of type ‘com.itheima.dao.BookDao1‘ available: expected single matching bean 问题解决
  7. 第56期:第七次信息革命的挑战
  8. STM32配置CH375B成HID Host模式读取自定义HID设备的数据 ——STM32配置CH375B接口函数
  9. matlab watershed函数简单实现_薛定宇教授大讲堂(卷):MATLAB程序设计|文末赠书...
  10. 仿 IOS 打造一个全局通用的对话框