人人尽说江南好

人人尽说江南好

小 Z 是一个不折不扣的 ZRP(Zealot Round-game Player,回合制游戏狂热玩家),最近他想起了小时候在江南玩过的一个游戏。
在过去,人们是要边玩游戏边填词的,比如这首《菩萨蛮》就是当年韦庄在玩游戏时填 的:
人人尽说江南好,游人只合江南老。
然而我们今天不太关心人们填的词是什么,我们只关心小 Z 那时玩过的游戏。
游戏的规则是这样的,给定 nnn 堆石子,每堆石子一开始只有一个。小 Z 和他的小伙伴轮流操作,小 Z 先行操作。操作可以将任意两堆石子合并成为一堆,当谁不再能操作的时候,谁就输掉了。不过,当一堆石子堆的太高时可能发生危险,因此小 Z 和他的小伙伴规定,任何时刻任意一堆石子的数量不能超过 mmm。即假如现在有两堆石子分别有 aaa 个和 bbb 个,而且 a+b>ma+b>ma+b>m,那么这两堆石子就不能合成一堆。

小 Z 和他的小伙伴都是很聪明的,所以他们总是会选择对自己最有利的策略。现在小 Z 想要知道,在这种情况下,对于一个给定的 nnn 和 mmm,到底是谁能够获得胜利呢?

输入格式
本题包括多组数据。

数据第一行为一个数 TTT,为数据组数。 以下 TTT 行,每行两个正整数 n,mn,mn,m,表示一个对局中的石子堆数和高度限制。

输出格式
输出 TTT 行,每行为 0 或 1,如果为 0 意为小 Z(即先手)会取得胜利,为 1 则为后手会取得胜利。

样例
样例输入
5
7 3
1 5
4 3
6 1
2 2
样例输出
1
1
1
1
0

题解及分析

此题是一道关于博弈论的题目,仔细观察就可以发现这个次数是可以算出来的, 为(n/m)*(m-1)+((n%m)?(n%m-1):0) , 然后就比较简单了

#include<stdio.h> 
long long int T,m,n;
int main()
{
	long long int ans;
	scanf("%lld",&T);
	while(T--)
	{
		scanf("%lld%lld",&n,&m);
		long long ans=(n/m)*(m-1)+((n%m)?(n%m-1):0);
		if(ans&1) printf("0\n");
		else printf("1\n");
	}
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值