题解报告:hdu 4764 Stone(巴什博弈)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4764

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.

译文:唐和江是好朋友。为了决定吃晚餐的人,他们正在玩游戏。具体来说,唐和江会在白板上写数字(整数)。唐先写,然后写江,然后再写唐,等等......此外,假设前一轮写的数字是X,下一个玩的人应该写一个数Y,使得1 <= Y - X <= k 。首先写入不小于N的数字的人将失去游戏。请注意,在第一轮中,唐可以只在范围[1,k](包括两端)内编写一个数字。你可以认为唐和姜总是会打得最好,因为他们都是非常聪明的学生。

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.

译文:有多个测试用例。对于每个测试案例,将有一行输入具有两个整数N(0 <N <= 10 ^ 8)和K(0 <K <= 100)。当N和k都为零时输入终止。

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

解题思路:简单的巴什博弈。题目的意思就是谁先写到数字N或者是超过N谁就输,换句话说,谁只要所选数字到达n-1,谁就赢。规则是先手刚开始只能在[1,k]中编写一个数字,即选择一个不大于k的数字,接下来的规则就是1<=Y-X<=k,我们可以发现,其实Y就是对之前两个人所选数字的累加和,也就是之后轮到的人所选择的数字至少为1,至多为k。到这,所有条件已经满足巴什博弈的模型了。我们将问题转换一下,现有N-1这个和数,要求每次选择减去一个不大于k的数字,谁最后减去一个数字后和数变为k+1,谁就赢,因为接下来的人选择减去的数字不超过k,即最后和数剩下不超过k,再轮到的人都能一次减掉剩下的和数,即此时轮到的人必胜。

结论:当(n-1)%(k+1)==0,后手“Jiang”必赢,否则先手“Tang”必赢。

AC代码:

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 int main()
 4 {
 5     int n,k;
 6     while(cin>>n>>k && (n+k)){
 7         if((n-1)%(k+1)==0)cout<<"Jiang"<<endl;//后手必赢
 8         else cout<<"Tang"<<endl;//先手必赢
 9     }
10     return 0;
11 }

原文地址:https://www.cnblogs.com/acgoto/p/9099567.html

时间: 2024-10-08 22:17:03

题解报告:hdu 4764 Stone(巴什博弈)的相关文章

HDU 4388 Stone Game II {博弈||找规律}

Stone Game II Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 531    Accepted Submission(s): 300 Problem Description Stone Game II comes. It needs two players to play this game. There are some p

HDU 2188 (巴什博弈)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2188 悼念512汶川大地震遇难同胞——选拔志愿者 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 6813    Accepted Submission(s): 4297 Problem Description 对于四川同胞遭受的灾难,全国人

HDU 2897 (巴什博弈)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2897 邂逅明下 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 3320    Accepted Submission(s): 1499 Problem Description 当日遇到月,于是有了明.当我遇到了你,便成了侣.那天,日月相会,

HDU 2897 经典巴什博弈

从n个石子中每次取p~q个,求先手能否获胜 可以先列举一部分数据,然后观察可得总是在p+q中循环,所以只要用n对p+q取模就好了 #include <cstdio> #include <cstring> #include <iostream> using namespace std; int p,q; int main() { // freopen("a.in" , "r" , stdin); int n; while(scanf

hdu4764 Stone 巴什博弈

//先到n-1的赢 #include<iostream> #include<cstdio> #include<cstring> using namespace std ; int main() { int n , k; while(scanf("%d%d",&n,&k)  , n+k) { if((n-1)%(k+1) == 0) printf("Jiang\n") ; else printf("Tang

HDU 1847 【巴什博弈】

Good Luck in CET-4 Everybody! Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 12422 Accepted Submission(s): 8056 Problem Description 大学英语四级考试就要来临了,你是不是在紧张的复习?也许紧张得连短学期的ACM都没工夫练习了,反正我知道的Kiki和Cici都是

博弈论基础——巴什博弈

->可以看这<- HDU.4764.Stone \(Description\) Tang,Jiang两人轮流写数,若A在写了X,则B只能写Y,满足1<=Y-X<=k.最先写数的T只能写[1,k]内的数.第一个写的数>=N的lose,问最后的winner. \(Solution\) 看做取N-1个石子,每次最多取K个,就是个巴什博弈了 #include <cstdio> int main() { int n,k; while(scanf("%d%d&quo

题解报告:hdu 1846 Brave Game(巴什博弈)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1846 Problem Description 十年前读大学的时候,中国每年都要从国外引进一些电影大片,其中有一部电影就叫<勇敢者的游戏>(英文名称:Zathura),一直到现在,我依然对于电影中的部分电脑特技印象深刻.今天,大家选择上机考试,就是一种勇敢(brave)的选择:这个短学期,我们讲的是博弈(game)专题:所以,大家现在玩的也是"勇敢者的游戏",这也是我命名这个题目

题解报告:hdu 2188 悼念512汶川大地震遇难同胞——选拔志愿者(巴什博弈)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2188 Problem Description 对于四川同胞遭受的灾难,全国人民纷纷伸出援助之手,几乎每个省市都派出了大量的救援人员,这其中包括抢险救灾的武警部队,治疗和防疫的医护人员,以及进行心理疏导的心理学专家.根据要求,我校也有一个奔赴灾区救灾的名额,由于广大师生报名踊跃,学校不得不进行选拔来决定最后的人选.经过多轮的考核,形势逐渐明朗,最后的名额将在"林队"和"徐队&quo