HDU 4764 Stone

版权声明:本文为我原创文章,转载请注明出处 https://blog.csdn.net/gzh1992n/article/details/12140015

题意:

两人轮流写数字。当前写的是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;
}


展开阅读全文

没有更多推荐了,返回首页