hdu 4764——Stone
2015-08-07 15:24
239 查看
题意:可以理解为有N-1个石头(减一是因为题目说不能有N),两个人轮流拿,每次最多拿k个。如果一个人没有拿的了就输了。问先手是否会赢。
思路:若初始状态是0,那么先手必输。当石头是1~k的情况下,先手可以一次拿完。所以1~k先手必赢。
如果初始是k+1个石头,先手不论怎么拿,拿完以后就变成1~k的情况了,即上一种情况,这时后手必赢。
如果有k+2~2k个石头,那么先手必然可以拿到只剩下k-1个,变成上一种情况。所以k+2~2k个石头先手必赢。
这样分析下去就找到规律了。
代码如下:
思路:若初始状态是0,那么先手必输。当石头是1~k的情况下,先手可以一次拿完。所以1~k先手必赢。
如果初始是k+1个石头,先手不论怎么拿,拿完以后就变成1~k的情况了,即上一种情况,这时后手必赢。
如果有k+2~2k个石头,那么先手必然可以拿到只剩下k-1个,变成上一种情况。所以k+2~2k个石头先手必赢。
这样分析下去就找到规律了。
代码如下:
[code]#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; }
相关文章推荐
- VBA引用.Net类库
- swirl 4: Vectors
- win7局域网类文件共享
- 关于事务
- 数组指针 和 指针数组
- BFS模版程序
- (一) Simple build files(简单的构建文件)
- 安装程序无法创建新的系统分区,也无法定位现有系统分区
- VBA引用.Net类库
- Appium设置动作间间隔时间的方式
- 自定义UINavigationController的后退按钮标题
- 内支付二:设置需要支付的商品
- Oulipo HDU杭电1686【KMP】
- JSONP
- HDU 5355 Cake
- XYZZY(spfa求最长路)
- c 实现字符串反转(参考redis源码)
- mysql数据表字符集是latin1,项目是utf8,怎么从数据表中读取数据而保证不乱码?
- SVN的代码正确提交方法
- jQuery实现仿百度帖吧头部固定导航效果