4767 巴什博弈 Stone

本文介绍了一个关于两个人轮流在白板上写数的游戏,并通过算法确定最优策略下谁将赢得游戏。游戏设定中,玩家需确保所写的数与前一个数之差介于特定范围内,最先达到指定数值者输。文章提供了C++代码实现,用于判断不同参数下赢家归属。

Stone

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 2161    Accepted Submission(s): 1523

Problem Description

Tang and Jiang are good friends. To decide whose treat it is for dinner, they are playing a game. Specifically, Tang and Jiang will alternatively write numbers (integers) on a white board. Tang writes first, then Jiang, then again Tang, etc... Moreover, assuming that the number written in the previous round is X, the next person who plays should write a number Y such that 1 <= Y - X <= k. The person who writes a number no smaller than N first will lose the game. Note that in the first round, Tang can write a number only within range [1, k] (both inclusive). You can assume that Tang and Jiang will always be playing optimally, as they are both very smart students.

 

 

Input

There are multiple test cases. For each test case, there will be one line of input having two integers N (0 < N <= 10^8) and k (0 < k <= 100). Input terminates when both N and k are zero.

 

 

Output

For each case, print the winner's name in a single line.

 

 

Sample Input

1 1

30 3

10 2

0 0

 

 

Sample Output

Jiang

Tang

Jiang

 解析:

   1.注意查找必胜状态,因为取到n的为必败状态,所以第一个人胜利的状态什n-1,所以(n-1)%(k+1)!=0是第一个人胜利的状态。

#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cmath>
using namespace std;
int judge(int n,int m)
{
	if((n-1)%(m+1)==0)
	  return 1;
	else return 0;
}
int main()
{
	int n,k;
	while(scanf("%d%d",&n,&k)!=EOF)
	{
		if(n==0&&k==0) break;
	    else
	    {
	    	if(judge(n,k))
	    	   cout<<"Jiang"<<endl;
	    	else
	    	   cout<<"Tang"<<endl;
		}
	}
	return 0;
}

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值