hdu 4764——Stone

来源:互联网 发布:thinkphp3.2项目源码 编辑:程序博客网 时间:2024/06/04 23:31

题意:可以理解为有N-1个石头(减一是因为题目说不能有N),两个人轮流拿,每次最多拿k个。如果一个人没有拿的了就输了。问先手是否会赢。
思路:若初始状态是0,那么先手必输。当石头是1~k的情况下,先手可以一次拿完。所以1~k先手必赢。
如果初始是k+1个石头,先手不论怎么拿,拿完以后就变成1~k的情况了,即上一种情况,这时后手必赢。
如果有k+2~2k个石头,那么先手必然可以拿到只剩下k-1个,变成上一种情况。所以k+2~2k个石头先手必赢。
这样分析下去就找到规律了。
代码如下:

#include<cstdio>#include<cstdlib>#include<iostream>#include<cstring>#include<map>#include<set>#include<list>#include<stack>#include<algorithm>#include<queue>#include<vector>#include<time.h>#include<iomanip>#include<assert.h>using namespace std;int main(){//    freopen("data.txt","r",stdin);    int n,k;    while(scanf("%d%d",&n,&k)&&n&&k){        n--;        if(n == 0 || n%(k+1) == 0){            puts("Jiang");        } else {            puts("Tang");        }    }    return 0;}
0 0