NYOJ 取石子(一)【巴什博奕】

取石子(一)

时间限制: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
来源

经典题目

#include<cstdio>
#include<cstdlib>
#include<cstring>
using namespace std;
int main()
{
	int k,n,m;
	scanf("%d",&k);
	while(k--){
		scanf("%d%d",&n,&m);
		if(n%(m+1)==0){
			printf("Lose\n");
		}
		else printf("Win\n");
	}
	return 0;
}        
时间: 2024-08-28 12:01:30

NYOJ 取石子(一)【巴什博奕】的相关文章

hdu1527 &amp; poj1067 取石子游戏 威佐夫博奕模型,,模板题o(╯□╰)o

取石子游戏 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 35727   Accepted: 12065 Description 有两堆石子,数量任意,可以不同.游戏开始由两个人轮流取石子.游戏规定,每次有两种不同的取法,一是可以在任意的一堆中取走任意多的石子:二是可以在两堆中同时取走相同数量的石子.最后把石子全部取完者为胜者.现在给出初始的两堆石子的数目,如果轮到你先取,假设双方都采取最好的策略,问最后你是胜者还是败者

http://codeforces.com/gym/100694/problem/M The Fifth Season (巴什博奕)

题目链接 一直觉得巴什博奕是最简单的博弈遇到肯定没问题,结果被虐惨了,看完标程错了10多遍都没反应过来,当然标程题解和代码的意思也写反了,但是还是想对自己说一句mdzz,傻啊!!!这道题很不错,我觉得很有必要拿来写一篇博客. 题意:n个石子,两个人轮流取,q次询问,每次询问给定k和l,取的石子数目在k到l之间,假设两个人的取法都为最佳即向着自己赢的目标取,问一共能取多少次. 题解:巴什博奕,接下来的叙述中用a和b代替k和l.根据巴什博奕,首先ans=n%(a+b)*2是肯定的,问题就在于余数p.

杭电1846(巴什博奕)

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

巴什博奕

巴什博奕(Bash Game):只有一堆n个物品,两个人轮流从这堆物品中取物,规定每次至少取一个,最多取m个.最后取光者得胜. 显然,如果n=m+1,那么由于一次最多只能取m个,所以,无论先取者拿走多少个,后取者都能够一次拿走剩余的物品,后者取胜.因此我们发现了如何取胜的法则:如果n=(m+1)*r+s,(r为任意自然数,s≤m),那么先取者要拿走s个物品,如果后取者拿走k(≤m)个,那么先取者再拿走m+1-k个,结果剩下(m+1)(r-1)个,以后保持这样的取法,那么先取者肯定获胜.总之,要保

博弈论一 [ 巴什博奕 ]

首先,这基本是关于ACM博弈论得一系列文章吧. 今天先讲一个最简单得博弈--巴什博奕. 其游戏规则是这样的: 有一堆n个石子,两个足够聪明的人玩,每个人可以去1-m个石子,取到最后一个石子为胜. 比如 n=7 ,m =3 那么先手必胜,过程大概如下, 先手取3,后首取i个,先手则拿4-i个,这样先手就拿到最后的石子了.(3+i+4-i=7,所以4-i就包含最后一个). 那么其实想法很简单. 当n%(m+1)==0,先手必输,否则先手必胜. 为什么? 当n%(m+1)==0,时,先手取i个,后手去

HDU 1851 (巴什博奕 SG定理) A Simple Game

这是由n个巴什博奕的游戏合成的组合游戏. 对于一个有m个石子,每次至多取l个的巴什博奕,这个状态的SG函数值为m % (l + 1). 然后根据SG定理,合成游戏的SG函数就是各个子游戏SG函数值的异或和. 1 #include <cstdio> 2 3 int main() 4 { 5 int T, n; scanf("%d", &T); 6 while(T--) 7 { 8 scanf("%d", &n); 9 int s = 0,

HDU2149 Public Sale(巴什博奕)

才直到这种问题叫巴什博奕 换是老问题 多了一个第一次报价的输出取值 我分了两种情况 1.N>=M时 ,应该是输出M,M+1,...N 2.N<M时,输出s,s+N+1,...<=M (s来源于公式M%(N+1) == s) #include<cstdio> int main() { int M,N; while(scanf("%d%d",&M,&N)!=EOF){ if(M%(N+1)==0) printf("none\n&quo

博弈:巴什博奕(Bash Game)威佐夫博奕(Wythoff Game)尼姆博奕(Nimm Game)

巴什博奕(Bash Game):只有一堆n个物品,两个人轮流从这堆物品中取物,规定每次至少取一个,最多取m个.最后取光者得胜 对于巴什博弈可以考虑:n=(m+1)*k+s,即如果n%(m+1)!=0则先取者只需取走s物品即可保证获胜. HDU 1846:裸的. #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<limits.h> t

HDU2897( 巴什博奕变形)

邂逅明下 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 2592 Accepted Submission(s): 1205 Problem Description 当日遇到月,于是有了明.当我遇到了你,便成了侣. 那天,日月相会,我见到了你.而且,大地失去了光辉,你我是否成侣?这注定是个凄美的故事.(以上是废话) 小t和所有世俗的人们一样,

hdu 2897 巴什博奕变形

http://acm.hdu.edu.cn/showproblem.php?pid=2897 1.看清最后取的是输还是赢 2.分类讨论,想的时候,看怎么能回到最初状态---就是回到t*(p+q)+s的状态,以及怎么回到已经推出的必败态 #include <cstdio> #include <cstring> #include <algorithm> #include <string> #include <iostream> #include &l