NYOJ_23_取石子(一)
取石子(一)
- 描述
-
一天,TT在寝室闲着无聊,和同寝的人玩起了取石子游戏,而由于条件有限,他/她们是用旺仔小馒头当作石子。游戏的规则是这样的。设有一堆石子,数量为N(1<=N<=1000000),两个人轮番取出其中的若干个,每次最多取M个(1<=M<=1000000),最先把石子取完者胜利。我们知道,TT和他/她的室友都十分的聪明,那么如果是TT先取,他/她会取得游戏的胜利么?
- 输入
-
第一行是一个正整数n表示有n组测试数据
输入有不到1000组数据,每组数据一行,有两个数N和M,之间用空格分隔。 - 输出
- 对于每组数据,输出一行。如果先取的TT可以赢得游戏,则输出“Win”,否则输出“Lose”(引号不用输出)
- 样例输入
-
2 1000 1 1 100
- 样例输出
-
Lose Win
- 来源
- 经典题目
- 上传者
张云聪
题解:
一开始低估了这个难度为2的问题,却发现却不是那么的简单,查了资料,原来是博弈问题
巴什博奕(Bash Game):
只有一堆n个物品,两个人轮流从这堆物品中取物,规定每次至少取一个,最多取m个。最后取光者得胜。
显然,如果n=m+1,那么由于一次最多只能取m个,所以,无论先取者拿走多少个,后取者都能够一次拿走剩余的物品,后者取胜。因此我们发现了如何取胜的法则:如果n=(m+1)r+s,(r为任意自然数,s≤m),那么先取者要拿走s个物品,如果后取者拿走k(≤m)个,那么先取者再拿走m+1-k个,结果剩下(m+1)(r-1)个,以后保持这样的取法,那么先取者肯定获胜。总之,要保持给对手留下(m+1)的倍数,就能最后获胜。#include <stdio.h>int main() {int t;scanf("%d", &t);while (t--){int n, m;scanf("%d%d", &n, &m);if (n % (1 + m))printf("Win\n");elseprintf("Lose\n");}return 0; }
转载于:https://www.cnblogs.com/fayne/p/7224805.html
NYOJ_23_取石子(一)相关推荐
- 洛谷P2252 取石子游戏(威佐夫博弈)
题目背景 无 题目描述 有两堆石子,数量任意,可以不同.游戏开始由两个人轮流取石子.游戏规定,每次有两种不同的取法,一是可以在任意的一堆中取走任意多的石子:二是可以在两堆中同时取走相同数量的石子.最后 ...
- BZOJ 1874: [BeiJing2009 WinterCamp]取石子游戏(SG函数)
Time Limit: 5 Sec Memory Limit: 162 MB Submit: 871 Solved: 365 [Submit][Status][Discuss] Descripti ...
- bzoj1874: [BeiJing2009 WinterCamp]取石子游戏
1874: [BeiJing2009 WinterCamp]取石子游戏 Time Limit: 5 Sec Memory Limit: 162 MB Submit: 834 Solved: 350 ...
- 梦工厂实验室 取石子之fans 博弈
问题 D: 取石子之fans 时间限制: 1 Sec 内存限制: 64 MB 提交: 57 解决: 26 [提交][状态][讨论版] 题目描述 Yougth和Hrdv玩一个游戏,拿出n个石子摆成一 ...
- 洛谷 P4706 取石子 解题报告
P4706 取石子 题目描述 现在 Yopilla 和 yww 要开始玩游戏! 他们在一条直线上标记了 \(n\) 个点,从左往右依次标号为 \(1, 2, ..., n\) .然后在每个点上放置一些 ...
- Wannafly 挑战赛16 A 取石子
题目描述 给出四堆石子,石子数分别为a,b,c,d.规定每次只能从堆顶取走石子,问取走所有石子的方案数. 输入描述: 在一行内读入四个由空格分隔的整数a,b,c,d, 输入均为不超过500的正整数 输 ...
- NYOJ 23 取石子
取石子(一) 时间限制:3000 ms | 内存限制:65535 KB 难度:2 描述 一天,TT在寝室闲着无聊,和同寝的人玩起了取石子游戏,而由于条件有限,他/她们是用旺仔小馒头当作石子.游戏的规 ...
- 【hdu 1527】取石子游戏
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s) ...
- 威佐夫博弈:百练OJ:1067:取石子游戏
威佐夫博弈(Wythoff's game):有两堆各若干个物品,两个人轮流从任一堆取至少一个或同时从两堆中取同样多的物品,规定每次至少取一个,多者不限,最后取光者得胜. 百练OJ:1067:取石子游戏 ...
- NYOJ 888 取石子(九)
取石子(九) 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 最近TopCoder的Yougth和Hrdv在玩一个游戏,游戏是这样的. 有n堆石子,两个人轮流从其中某一堆 ...
最新文章
- 『Python基础-11』集合 (set)
- [置顶]WebService学习总结(4)——第三方webService服务调用
- 【Flask】ORM高级操作之分组、过滤和子查询
- CSS定位网页中的元素
- H5 Canvas maximum-scale图像模糊解决办法
- php多个表查询的方法_php+mysql+ajax实现单表多字段多关键词查询的方法
- 偏光太阳镜测试图片软件,[专题]真假偏光太阳镜简单、实用辨别方法!
- laravel 框架中的路由
- GoogleChrome最新的代理设置流程
- 软件工程--可行性研究过程详解
- html实现圆形图片
- Java 小Q 世界上最遥远的距离 解法二
- html页面在线预览PDF文件
- 还没收到win11系统的推送?教你这样可以直接升级win11
- bzoj4605 崂山白花蛇草水 权值线段树套kd树
- 程序员应该掌握的选择思维模式?
- edge浏览器如何将网页转换为pdf
- [matlab]过一点与椭圆的切线
- 中科院分词系统学习笔记(一)
- Android4.4/CM11编译常见错误及解决方法!
热门文章
- 梯度下降-从0开始一行代码一解释
- 知乎上的48条神回复,针针见血
- P5441 【XR-2】伤痕
- ES6-字符串扩展-padStart(),padEnd()
- vue组件独享守卫钩子函数参数详解(beforeRouteEnter、beforeRouteUpdate、beforeRouteLeave)...
- Arduino学习笔记23
- OC @class关键字
- day18 8.jdbc中设置事务隔离级别
- 定时任务schedule(spring boot )
- JSADS-日志对象MyLogger