HDU 1846(巴什博弈)

Brave Game

Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 4050    Accepted Submission(s): 2644

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个,所以,无论先取者拿走多少个,后取者都能够一次拿走剩余的石子,后者取胜.因此我们发现了如何取胜的法则:如果n=(m+1)*r+s,(s≤m),那么先取者要拿走s个石子,如果后取者拿走k(k≤m)个,那么先取者再拿走m+1-k个,结果剩下(m+1)(r-1)个,以后保持这样的取法,那么先取者肯定获胜.总之,要保持给对手留下(m+1)的倍数,就能最后获胜.

 

 1 #include<stdio.h>
 2 int main()
 3 {
 4     int c,n,m;
 5     scanf("%d",&c);
 6     while(c--)
 7     {
 8        scanf("%d%d",&n,&m);
 9        if(n%(m+1)==0) printf("second\n");
10        else printf("first\n");
11     }
12     return 0;
13 }

 

时间: 2024-09-27 10:58:58

HDU 1846(巴什博弈)的相关文章

简单巴什博弈

 (刚开始写博客,写的不好,请见谅) 巴什博弈: 只有一堆n个物品,两个人轮流从这堆物品中取物,规定每次至少取一个,最多取m个.最后取光者得胜. 若(m+1) | n,则先手必败,否则先手必胜. 显然,如果n=m+1,那么由于一次最多只能取m个,所以,无论先取者拿走多少个,后取者都能够一次拿走剩余的物品,后者取胜.因此我们发 现了如何取胜的法则:如果n=(m+1)r+s,(r为任意自然数,s≤m),那么先取者要拿走s个物品,如果后取者拿走k(≤m)个,那么先取者再拿 走m+1-k个,结果剩下

hdu 1079 Calendar Game 博弈

      题目就是寻找有无必胜策略     一开始看错题意了,一直想用dp预处理下,结果发现就是简单的逻辑判断.     无论向后一天还是向后一月,均会改变奇偶性,除了4.30,9.30,11.30和非润年的2.28,在几个特殊日期中向后可能会改变奇偶性.     目标日期为11.4,偶数.     因此,无特殊日期时奇数必胜     而如果先手是偶数,其必然不会进入特殊日期,因为一旦奇偶改变,必胜变为必输--     如果先手为奇数,因为不存在必改变奇偶性的日期,所以进入特殊日期后也无法改变

hdu 2147 kiki&amp;#39;s game

http://acm.hdu.edu.cn/showproblem.php?pid=2147 这是一个巴什博弈的题,当两个数至少有一个数是偶数先手必胜 代码如下: #include <iostream> #include <cstdio> using namespace std; int main() { int m,n; while(cin>>m>>n,m,n) { if(m%2 && n%2) puts("What a pity

【端午小练】HDU1846-Brave Game

Brave Game Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 5994    Accepted Submission(s): 3983 Problem Description 十年前读大学的时候,中国每年都要从国外引进一些电影大片,其中有一部电影就叫<勇敢者的游戏>(英文名称:Zathura),一直到现在, 我依然对于电影中的

《程序设计解题策略》—— 导读

前言 策略即计策和谋略,指一种总体的行为方针和行事方法,即一种可以实现目标的方案集合,而非纠缠于细枝末节的雕虫小技.程序设计的解题策略指的是编程解题过程中所采取的一种基本方法,是对解题方法的综合性.智能性和个性化的认识.尤其是当面对非标准.非模式化的问题时,就更需要发挥创造性思维,求索应对策略和解题艺术.正如古人所言"术谋之人以思谟为度,故能成策畧之奇,而不识遵法之良". 对于程序设计竞赛选手的培养,教师应注重在两个方面系统地训练选手:①程序设计竞赛的知识体系:②程序设计的解题策略.

孙正义拒临谈判桌软银阻支付宝单飞

晚报记者 秦川 报道 记者日前从消息人士处了解到,持有阿里巴巴40%股权的雅虎已与牵着就支付宝股权转移一事达成一致,具体的补偿分案仍在磨合之中.但占据阿里四大董事席位之一的软银,却还尽力拖延结果,希望谈判方做出更多让步."事情很复杂,但对达成协议很乐观. "马云昨天透露,在董事局三席已表现出积极意愿的情况下,支付宝脱离雅虎已是大势所趋. 雅巴谈判博弈"卖身"补偿 "我们以前有过矛盾,不过现在正在努力解决."昨天,在D9论坛上,马云就各界关注的支付

hdu 1849 (尼姆博弈)

http://acm.hdu.edu.cn/showproblem.php?pid=1849 简单的尼姆博弈: 代码如下: #include <iostream> #include <cstdio> using namespace std; int main() { int m,n,t; while(cin>>m,m) { int ans=0; for(int i=0; i<m; i++) { cin>>n; ans^=n; } if(ans==0)

雅巴股权变局的沙盘推演:多方插手博弈开始

孙进 雅虎与阿里巴巴之间的"股权之争"进入了一个随时都可能发生点什么的阶段--按照双方五年前签署的协议,雅虎从10月24日起即有权把在阿里巴巴的董事会席位由原先一位增加到两位,相关投票权的调整也开始生效. 截至记者发稿,双方仍保持表面上的平静,雅虎并没有在第一时间提出第二名董事的人选,也没有立刻行使这一权利. 而双方对阿里巴巴控制权的掌握,已经引起了外部力量的介入,一些PE和投行开始准备物色利用美国在线(AOL)或者eBay等企业,再度开始收购和瓜分雅虎资产的举措,相关传闻已经在资本市

HDU 1538 A Puzzle for Pirates:博弈&amp;amp;海盗分赃问题

Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Problem Description A bunch of pirates have gotten their hands on a hoard of gold pieces and wish to divide the loot. They are democratic pirates in their own way, and i