您的位置:首页 > 理论基础 > 计算机网络

HDU 4764 Stone (2013长春网络赛,水博弈)

2013-09-29 17:33 295 查看

Stone

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


[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

很水的博弈,和取石子游戏是一样的。

必败点是 (n-1)%(k+1)==0

/* ***********************************************
Author        :kuangbin
Created Time  :2013/9/28 星期六 12:09:01
File Name     :2013长春网络赛\1006.cpp
************************************************ */

#pragma comment(linker, "/STACK:1024000000,1024000000")
#include <stdio.h>
#include <string.h>
#include <iostream>
#include <algorithm>
#include <vector>
#include <queue>
#include <set>
#include <map>
#include <string>
#include <math.h>
#include <stdlib.h>
#include <time.h>
using namespace std;

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