博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDU 3951 Coin Game(博弈取对称思路)
阅读量:4139 次
发布时间:2019-05-25

本文共 1830 字,大约阅读时间需要 6 分钟。

Coin Game

Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 1494 Accepted Submission(s): 853
Problem Description
After hh has learned how to play Nim game, he begins to try another coin game which seems much easier.
The game goes like this:
Two players start the game with a circle of n coins.
They take coins from the circle in turn and every time they could take 1~K continuous coins.
(imagining that ten coins numbered from 1 to 10 and K equal to 3, since 1 and 10 are continuous, you could take away the continuous 10 , 1 , 2 , but if 2 was taken away, you couldn't take 1, 3, 4, because 1 and 3 aren't continuous)
The player who takes the last coin wins the game.
Suppose that those two players always take the best moves and never make mistakes.
Your job is to find out who will definitely win the game.
Input
The first line is a number T(1<=T<=100), represents the number of case. The next T blocks follow each indicates a case.
Each case contains two integers N(3<=N<=10
9,1<=K<=10).
Output
For each case, output the number of case and the winner "first" or "second".(as shown in the sample output)
Sample Input
23 13 2
Sample Output
Case 1: firstCase 2: second
Author
NotOnlySuccess
Source
/*(转分析:) 题意:有N个硬币围成一圈,两个人每次只能取连续的1~K个硬币。 问先手有没有必胜策略。解法:当K==1:结果只与N的奇偶有关。     当K>=2:如果N<=K,那么很显然先手必胜。             当N>K时,先手一下子取不完,设剩余M个,   	如果M<=K则后手一下全部取完,后手必胜;	当M>K,即此时M>=3且K>=2,	那么后手就可以在剩下的一排里取中间留两边然后以后就对称取,	就一定必胜;所有此时后手必胜;*/#include 
#include
using namespace std;int main(){ int t,i,n,k,now; scanf("%d",&t); for(now=1;now<=t;now++){ scanf("%d%d",&n,&k); printf("Case %d: ",now); if(k==1){ if(n%2==1) printf("first\n"); else printf("second\n"); } else{ if(k>=n) printf("first\n"); else printf("second\n"); } } return 0;}

转载地址:http://pfmvi.baihongyu.com/

你可能感兴趣的文章
Notepad++ 是程序员的必备利器之一
查看>>
Source Insight : 程序员最得心应手的代码阅读和编辑工具(高效)
查看>>
如何用C语言获取系统的用户登录名?
查看>>
如何用C语言获取系统的sid信息?
查看>>
C/C++中如何写长串(字符数组的拼接)?
查看>>
strtok函数真是个蹩脚而又恶心的设计(千万不要嵌套使用strtok函数)
查看>>
Windows和Linux的netstat
查看>>
C++如何实现string的trim功能? (已经包含trimLeft和trimRight)
查看>>
如何确保一个函数的被调用次数不少于另外一个函数的被调用次数?
查看>>
从netstat看网络编程
查看>>
ssh, telnet在发起什么连接请求?
查看>>
利用STL中的map来写一个自己的命令行界面
查看>>
127.0.0.1和0.0.0.0
查看>>
什么是抓包?为什么要抓包?
查看>>
第一年的年终奖
查看>>
git, svn------那一年, 我与软件配置管理职位擦肩而过(现在想来, 也算幸事)
查看>>
《HP大中华区总裁孙振耀退休感言》--- 我又读了一遍, 真的非常受益! 朋友, 我推荐给你!
查看>>
我心目中的代码三要素
查看>>
Windows TortoiseSVN和Linux SVN入门
查看>>
你该怎样用svn才能避免冲突? (内附逻辑图和详细解释)
查看>>