您的位置:首页 > 其它

HDU 4764 Stone (巴什博弈)

2013-09-28 23:27 302 查看

Stone

Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)

Total Submission(s): 109 Accepted Submission(s): 85


[align=left]Problem Description[/align]
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.

[align=left]Input[/align]
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.

[align=left]Output[/align]
For each case, print the winner's name in a single line.

[align=left]Sample Input[/align]

1 1
30 3
10 2
0 0


[align=left]Sample Output[/align]

Jiang
Tang
Jiang


[align=left]Source[/align]
2013 ACM/ICPC Asia Regional Changchun Online

[align=left]Recommend[/align]
liuyiding

题意:

两个人写数字,要求当前个写的数字Y与前一个写的数字X满足:

1. 1 <= Y - X <= k

2. Y要求小于N(第一次取只需满足1<=Y<=k);

不都满足则输。

思路:

可将题目意思理解为取石子(题目有提示),取的石子是有规定的,谁能取到第N-1个,那么就能赢得比赛。

对了,就是巴什博弈。

/*************************************************************************
> File Name: Stone.cpp
> Author: BSlin
> Mail:
> Created Time: 2013年09月28日 星期六 12时22分50秒
************************************************************************/

#include <iostream>
#include <cstdio>
#include <cstring>
#include <string>
#include <cstdlib>
#include <cmath>
#include <algorithm>
#include <iterator>
#include <vector>
#include <map>
#include <set>
#include <stack>
#include <queue>
#define MP make_pair
#define INF (1<<30)
#define PI acos(-1.0)
#define esp 1e-8
const int dx[4]={0,0,0,0};
using namespace std;
#define read freopen("in.txt","r",stdin)
#define write freopen("out.txt","w",stdout)
#if defined (_WIN32) || defined (__WIN32) || defined (WIN32) || defined (__WIN32__)
#define LL __int64
#define LLS "%" "I" "6" "4" "d"
#else
#define LL long long
#define LLS "%" "l" "l" "d"
#endif

int main(int argc, char** argv) {
//read;
int n,k,ans;
while(scanf("%d%d",&n,&k)){
if(n == 0 && k == 0) break;
if(n == 1) {
printf("Jiang\n");
continue;
}
else {
ans =  (n - 1) % (k + 1);
if(ans == 0) {
printf("Jiang\n");
}
else printf("Tang\n");
}
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: