题意:
两人轮流写数字。当前写的是y,上一次写的是x,必须满足1<=y-x<=k。当前写的数字大于等于n的人输。
思路:
转换下题目意思,其实就是n-1个石头,每次取[1,k]个,不能取的人输。巴什博奕,结论不能整除k+1,先手赢。
code:
#include <algorithm>
#include <iostream>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <string>
#include <math.h>
#include <vector>
#include <queue>
#include <stack>
#include <cmath>
#include <list>
#include <set>
#include <map>
using namespace std;
/*-------------------------Template----*/
#define N 20020
#define E 200000
#define ll long long
#define CUBE(x) ((x)*(x)*(x))
#define SQ(x) ((x)*(x))
#define ALL(x) x.begin(),x.end()
#define CLR(x,a) memset(x,a,sizeof(x))
#define maxAry(a,n) max_element(a,a+(n))
#define minAry(a,n) min_element(a,a+(n))
typedef pair<int,int> PI;
const int INF=0x3fffffff;
const int PRIME =999983;
const int MOD =10007;
const int MULTI =1000000007;
const double EPS=1e-9;
/*----------------------end Template----*/
int n,k;
int main()
{
while(scanf("%d%d",&n,&k),n||k){
if((n-1)%(k+1)) puts("Tang");
else puts("Jiang");
}
return 0;
}