http://acm.hdu.edu.cn/showproblem.php?pid=4764
由题意可知
胜的一方必须是拿到N-1这个数 那么输的一方肯定是在 N-k-1 ~ N-2 这些数中取 那么赢的一方必然取到了N-k-2这个数
所以一次递归推算 先手取到这些特殊数的必赢 这些数为 N-1、N-1-(k+1)、N-1-2(k+1) ......
所以得如果N-1 能够整除 k+1 则后手赢 否则先手赢
当然得注意N=1 的情况 和k>=N 的情况
#include<iostream>
#include <cstdio>
using namespace std;
int main()
{
int n,k;
while(~scanf("%d%d",&n,&k))
{
int flag=1;
if(n==0&&k==0) break;
if(n==1) flag=0;
else if(k>=n) flag=1;
else
{
int tmp=(n-1)%(k+1);
if(tmp==0) flag=0;
else flag=1;
}
if(flag)
printf("Tang\n");
else
printf("Jiang\n");
}
}