HDU 4764 Stone

原创 2015年11月20日 08:19:54

Stone

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


Problem 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.
 

Input
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.
 

Output
For each case, print the winner's name in a single line.
 

Sample Input
1 1 30 3 10 2 0 0
 

Sample Output
Jiang Tang Jiang
 

Source
 
http://acm.hdu.edu.cn/showproblem.php?pid=4764

分析:

题目等价于:

一堆石子有 N 个,两个人轮流取,每次能取的范围是 [ 1 , k ] 谁最后一个取谁就输了。
Nim 的变形。

首先看下另一个问题:http://blog.csdn.net/houheshuai/article/details/44871687

这个问题将最后的条件改变了:最后取完石子的将会输。

我们先拿出一个石子放到一边,还剩 n-1 个,将这 n-1 个石子转化为上面链接中的问题,

那么先手必败的状态为: (n - 1)  % ( k + 1) == 0

我们将拿出的那个石子放回去,再将游戏的最后条件变回来,那先手必败的状态仍然是:

 (n - 1)  % ( k + 1) == 0

代码:

#include <stdio.h>
int main()
{
    int n, k;
    while (~scanf("%d%d", &n, &k))
    {
        if (n == 0 && k == 0) break;
        if ((n - 1) % (k + 1) == 0) printf("Jiang\n");
        else printf("Tang\n");
    }
    return 0;
}


版权声明:本文为博主原创文章,未经博主允许不得转载。

HDU 4764 Stone (巴什博弈)

Stone Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Subm...

HDU 4764-Stone(博弈)

题意: J 和 T 轮流说数字

HDU 4764 Stone(博弈)

题意:两个人轮流取数,比前一人大且最多比他大k,最后不能取到比n小的数的人输。 思路:巴什博奕裸题。取石子游戏换了个说法,本质是一样的。 巴什博奕(Bash Game): 只有一堆n个物...

hdu 4764(stone) 巴什博弈

题目链接:点击打开链接、 题目大意:T和J,轮流写数字,前面一个人写x那么后面一个人写y 要使得1=n则输了 题目分析:博弈(bash game),转化。考虑你n-1的情况。如果某人在n-1处了,则另...

hdu1115 Lifting the Stone(几何,求多边形重心模板题)

(几何,求多边形重心模板题)

HDU 6237 A Simple Stone Game(CCPC 2017 哈理工)(素数分解+贪心)(好题)

题目 题意:       给你n堆石子,每次你可以从任意一堆里取出一个石子放到其他堆里,可以把一堆石子取空。问如何经过最少的次数使各堆石子的GCD值>1,求最小次数。       数据范围n 思路:...

hdu1115 Lifting the Stone(求多边形重心)

/* 题目描述: 有一个密度均匀的平面N多边形(3 另外已知N个有序(顺时针或逆时针)顶点的坐标值,第j个顶点坐标为(Xi , Yi ),且满 足 (|Xi|, |Yi|   解题过程:...

hdu 1896 Stone

Problem Description Because of the wrong status of the bicycle, Sempr begin to walk east to west ...

hdu acm 1115 Lifting the Stone(多边形重心)

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission...

hdu1729 Stone Game sg

Stone Game Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others) Total ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:HDU 4764 Stone
举报原因:
原因补充:

(最多只允许输入30个字)