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.
Output
For each case, print the winner's name in a single line.
题意:
Tang先选数,Jiang后选必须满足(1<=Y-X<=k),谁先到达大于等于n的数谁就输.
Tang的第一个数满足[1,k];
博弈论的水题一般比较好找规律,通过将数据从小到大的经行推一遍,很快就可找到规律.
n k
1 2 J 1 3 J
2 2 T 2 3 T
3 2 T 3 3 T
4 2 J 4 3 T
5 2 T 5 3 J
6 2 T 6 3 T
#include<iostream>
#include<cstring>
#include<cstdio>
#include<cstdlib>
#include<algorithm>
using namespace std;
int n,k,T;
double Min=10000.0;
double Max=0.0;
int main()
{
while(~scanf("%d%d",&n,&k))
{
if(n==0&&k==0)break;
if(n==1)
printf("Jiang\n");
else if(n%(k+1)==1)
printf("Jiang\n");
else
printf("Tang\n");
}
}