取石子(一)

原创 2015年07月11日 10:10:04

取石子(一)

时间限制:3000 ms  |  内存限制:65535 KB
难度:2
描述
一天,TT在寝室闲着无聊,和同寝的人玩起了取石子游戏,而由于条件有限,他/她们是用旺仔小馒头当作石子。游戏的规则是这样的。设有一堆石子,数量为N(1<=N<=1000000),两个人轮番取出其中的若干个,每次最多取M个(1<=M<=1000000),最先把石子取完者胜利。我们知道,TT和他/她的室友都十分的聪明,那么如果是TT先取,他/她会取得游戏的胜利么?
输入
第一行是一个正整数n表示有n组测试数据
输入有不到1000组数据,每组数据一行,有两个数N和M,之间用空格分隔。
输出
对于每组数据,输出一行。如果先取的TT可以赢得游戏,则输出“Win”,否则输出“Lose”(引号不用输出)
样例输入
2
1000 1
1 100
样例输出
Lose
Win

  思路:
    如何取胜的法则:如果n=(m+1)r+s,
(r为任意自然数,s≤m),那么先取者要拿走s个物品,
如果后取者拿走k(≤m)个,那么先取者再拿走m+1-k个,
结果剩下(m+1)(r-1)个,以后保持这样的取法,那么先取者肯定获胜。总之,要保持给对手留下(m+1)的倍数,就能最后获胜。
AC代码:

#include<iostream>
using namespace std;
int main()
{
	int n,m,N;
	cin >> N;
	while(N--)
	{
		cin >> n >> m;
		if(n%(m+1))
		{
			cout << "Win\n"; 
		}
		else
		{
			cout << "Lose\n";
		}
	}
	return 0;
}


版权声明:本文为博主原创文章,转载必须声明出处,thank。

相关文章推荐

取石子游戏_博弈

  • 2014年11月10日 17:41
  • 364KB
  • 下载

HDU 2177 取(2堆)石子游戏 (威佐夫博弈)

取(2堆)石子游戏 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Tota...

博弈论 取石子游戏 教程

  • 2009年08月19日 09:50
  • 9.85MB
  • 下载

取石子的策略.pdf

  • 2009年10月17日 01:28
  • 193KB
  • 下载

bzoj 1413: [ZJOI2009]取石子游戏(博弈+DP)

1413: [ZJOI2009]取石子游戏 Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 711  Solved: 470 [Submit][...

hdu2176取(m堆)石子游戏

m堆石子,两人轮流取.只能在1堆中取.取完者胜.先取者负输出No.先取者胜输出Yes,然后输出怎样取子.例如5堆 5,7,8,9,10先取者胜,先取者第1次取时可以从有8个的那一堆取走7个剩下1个,也...

POJ 1067 威佐夫博弈(Wythoff Game)问题 (取石子游戏)

取石子游戏 Description 有两堆石子,数量任意,可以不同。游戏开始由两个人轮流取石子。游戏规定,每次有两种不同的取法,一是可以在任意的一堆中取走任意多的石子;二是可以在两堆中同时取走相同...

openjudge 6266取石子游戏 博弈论 c++

博弈
  • MityKif
  • MityKif
  • 2016年11月17日 07:44
  • 631

NYOJ 题目135取石子(二)(博弈)

取石子(二) 时间限制:3000 ms  |  内存限制:65535 KB 难度:5 描述 小王喜欢与同事玩一些小游戏,今天他们选择了玩取石子。 游戏规则如下:共...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:取石子(一)
举报原因:
原因补充:

(最多只允许输入30个字)